[英]calling a function from another function by 'onclick' event
我想要做的是,通過單擊該功能中的單選按鈕從另一個函數調用一個函數。 這是我迄今為止所處理的代碼 -
<script type="text/javascript">
rad1 = document.createElement("input");
rad1.type = "radio";
rad1.name = "dooropt";
rad1.id = "rb1";
rad1.value = "y";
newP.appendChild(rad1);
text1 = document.createTextNode("Yes ");
newP.appendChild(text1);
rad2 = document.createElement("input");
rad2.type = "radio";
rad2.name = "dooropt";
rad2.id = "rb2";
rad2.value = "n";
newP.appendChild(rad2);
text2 = document.createTextNode("No ");
newP.appendChild(text2);
button1 = document.createElement("input");
button1.type = "button";
button1.value = "Open main door";
button1.style.visibility = "hidden";
newP.appendChild(button1);
button2 = document.createElement("input");
button2.type = "button";
button2.value = "Open apartment door";
button2.style.visibility = "hidden";
newP.appendChild(button2);
area.appendChild(newP);
rad1.onclick = mainalso();
rad2.onclick = onlyapp();
}
function mainalso()
{
button1.style.visibility="visible";
button2.style.visibility="visible";
}
function onlyapp()
{
button2.style.visibility="visible";
button1.style.visibility="hidden";
}
</script>
現在,每當點擊rad1時,我都希望運行mainalso(),這可能從代碼中可以清楚地看出來。 由於我對JavaScript很新,我不知道我在語法或概念上犯了什么錯誤。 另外,第一個函數(在mainalso()之前)是add(),在其中我在單擊我體內的按鈕時重復附加相同的內容。 我希望很清楚我想做什么。 當點擊rad1時,我想要出現兩個按鈕(button1和button2),但是在點擊rad2時我只想出現一個按鈕。 兩者都首先被設置為“隱藏”的可見性。 請幫幫我。 對不起,如果它似乎不清楚,我盡我所能..謝謝。
嘗試改變:
rad1.onclick = mainalso();
rad2.onclick = onlyapp();
至:
rad1.onclick = mainalso;
rad2.onclick = onlyapp;
你可以將調用function
s的結果分配給rad1
和rad2
的onclick
,在這種情況下,它將是undefined
。 通過刪除()
您將正確分配function
。
要確保button1
和button2
可用並在調用function
時將其設置為正確的值,您可以將代碼更改為:
...
newP.appendChild(button2);
area.appendChild(newP);
(function (b1, b2) {
rad1.onclick = function () {
b1.style.visibility="visible";
b2.style.visibility="visible";
};
rad2.onclick = function () {
b2.style.visibility="visible";
b1.style.visibility="hidden";
};
})(button1, button2);
你應該做這個:
rad1.onclick = mainalso;
rad2.onclick = onlyapp;
編輯:我試過這個,它對我有用。 見例子
window.onload = function() {
rad1 = document.createElement("input");
rad1.type = "radio";
rad1.name = "dooropt";
rad1.id = "rb1";
rad1.value = "y";
newP.appendChild(rad1);
text1 = document.createTextNode("Yes ");
newP.appendChild(text1);
rad2 = document.createElement("input");
rad2.type = "radio";
rad2.name = "dooropt";
rad2.id = "rb2";
rad2.value = "n";
newP.appendChild(rad2);
text2 = document.createTextNode("No ");
newP.appendChild(text2);
button1 = document.createElement("input");
button1.type = "button";
button1.value = "Open main door";
button1.style.visibility = "hidden";
newP.appendChild(button1);
button2 = document.createElement("input");
button2.type = "button";
button2.value = "Open apartment door";
button2.style.visibility = "hidden";
newP.appendChild(button2);
area.appendChild(newP);
rad1.onclick = mainalso();
rad2.onclick = onlyapp();
}
您必須定義您正在使用的newP和區域:
area.appendChild(NEWP);
由於標簽HTML的使用方式如下:
<input type="radio" name="dooropt" id="rb1" value="y" onClick="mainalso()"/>
所以你可以使用:
rad1.onClick = mainalso;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.