Javascript 通过';onclick';事件

Javascript 通过';onclick';事件,javascript,Javascript,我想做的是,通过单击另一个函数中的单选按钮,从该函数调用该函数。这是我到目前为止一直在编写的代码- <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.cr

我想做的是,通过单击另一个函数中的单选按钮,从该函数调用该函数。这是我到目前为止一直在编写的代码-

<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=document.createElement(“输入”);
rad1.type=“无线电”;
rad1.name=“dooropt”;
rad1.id=“rb1”;
rad1.value=“y”;
新p.appendChild(rad1);
text1=document.createTextNode(“是”);
newP.appendChild(text1);
rad2=document.createElement(“输入”);
rad2.type=“无线电”;
rad2.name=“dooropt”;
rad2.id=“rb2”;
rad2.value=“n”;
新p.appendChild(rad2);
text2=document.createTextNode(“否”);
newP.appendChild(text2);
button1=document.createElement(“输入”);
button1.type=“button”;
按钮1.value=“打开主门”;
button1.style.visibility=“隐藏”;
newP.appendChild(按钮1);
button2=document.createElement(“输入”);
button2.type=“按钮”;
按钮2.value=“打开公寓门”;
按钮2.style.visibility=“隐藏”;
新增追加子项(按钮2);
新儿童区(newP);
rad1.onclick=main也();
rad2.onclick=onlyapp();
}
函数main也()
{ 
按钮1.style.visibility=“可见”;
按钮2.style.visibility=“可见”;
}
函数onlyapp()
{
按钮2.style.visibility=“可见”;
按钮1.style.visibility=“隐藏”;
}
现在,无论何时单击rad1,我都希望mainal()运行,从代码中可以清楚地看到这一点。由于我对JavaScript还相当陌生,我不知道我在语法或概念上犯了什么错误。另外,第一个函数(mainal()之前)是add(),我在其中反复添加相同的内容,只需单击身体中的一个按钮。我希望我想做的事情很清楚。单击rad1时,我希望两个按钮(按钮1和按钮2)都出现,但单击rad2时,我只希望出现一个按钮。首先,这两个选项都设置为“隐藏”可见性。 请帮帮我。对不起,如果不清楚的话,我已经尽力了。。 谢谢。

尝试更改:

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

目前,您正在将调用
函数
s的结果分配给
rad1
rad2
onclick
,在这种情况下,
未定义。通过删除
()
,您将正确分配
功能

要确保调用
函数时
按钮1
按钮2
可用并设置为正确值,您可以将代码更改为:

...
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;
编辑:我试过这个,它对我有效。看


您必须定义newP和正在使用的区域:
新儿童区(newP)

由于标记HTML的使用方式如下:

<input type="radio" name="dooropt" id="rb1" value="y" onClick="mainalso()"/> 因此,您可以使用:


rad1.onClick=main

是我干的。还是不行。mainal()和onlyapp()函数是否有问题?
mainal()
onlyapp()
函数
s只有在
button1
button2
在全局范围内时才能正常工作;是这样吗?不,它们是在main()之前的函数add()中创建的,因为我希望它们在每次单击按钮时都被追加。我应该在函数add()外部全局声明它们,但在函数add()内部定义它们吗?这行吗?如果
button1
button2
只有一个值,那么就可以了。如果在循环中分配它们,那么就会遇到闭包问题。我已经更新了我的答案,以表明我会这样做。
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();
}
<input type="radio" name="dooropt" id="rb1" value="y" onClick="mainalso()"/>