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()"/>