0

私がやろうとしているのは、その関数のラジオボタンをクリックして、別の関数から関数を呼び出すことです。ここに私がこれまでに取り組んできたコードがあります -

<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 をクリックすると 1 つのボタンだけが表示されます。どちらも最初は「非表示」の可視性に設定されています。私を助けてください。わかりづらくてすみません、頑張ってみました..ありがとうございます。

4

3 に答える 3

1

変更してみてください:

rad1.onclick = mainalso();
rad2.onclick = onlyapp();

に:

rad1.onclick = mainalso;
rad2.onclick = onlyapp;

function現状では、 s を呼び出した結果を of に割り当てておりonclickrad1このrad2場合は になります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);
于 2012-07-13T08:08:38.343 に答える
1

これを行う必要があります:

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();
}
于 2012-07-13T08:09:12.590 に答える
0

使用している newP とエリアを定義する必要があります:
area.appendChild(newP);

タグ HTML は次のように使用されます。

<input type="radio" name="dooropt" id="rb1" value="y" onClick="mainalso()"/> 

したがって、次を使用できます。

rad1.onClick=メインも;

于 2012-07-13T08:47:22.557 に答える