簡體   English   中英

通過'onclick'事件從另一個函數調用一個函數

[英]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的結果分配給rad1rad2onclick ,在這種情況下,它將是undefined 通過刪除()您將正確分配function

要確保button1button2可用並在調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM