关于JavaScript的标签onclick的动态传参问题

原始的HTML为:<formmethod="POST"name="bgcolor"><center><tableborder=2cellpadding=5cellspac... 原始的HTML为:

<form method="POST" name="bgcolor">
<center>
<table border=2 cellpadding=5 cellspacing=3 width=100%>
<tr>
<td width="25%">
<input name="bgcolor1" type=radio onClick="ChangeColor(this.form, 'aliceblue')">
艾利斯兰 </td>
<td width="25%">
<input name="bgcolor2" type=radio checked onClick="ChangeColor(this.form, 'antiquewhite')">
古董白 </td>
</tr>
</table>
</center>
</form>

现在我想让这个onclick事件在外部进行绑定,我尝试过的方法:
<script language="JavaScript" type="text/javascript" src="popup2.js">
</script>
其中的popup2.js里的代码是如下:
document.getElementByName("bgcolor1").onclick = function() {ChangeColor(this.form, 'aliceblue');};
document.getElementByName("bgcolor2").onclick = function() {ChangeColor(this.form, 'antiquewhite');};
但是这个方法失败了。请教有没有办法对那些input标签的onclick事件进行动态绑定?
PS:请用原生JS,不要用JQuery,谢谢大家。
展开
 我来答
网海1书生
科技发烧友

推荐于2016-05-26 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
document.getElementByName("bgcolor1").onclick

这是错误的,正确的是:
document.getElementsByName("bgcolor1")[0].onclick

注意,By前面有s,因为它返回的是数组,同样,因为是数组,所以要指定具体元素,如果无重名元素则是[0]

另一个也一样
追答

单选按钮的name要设为相同的,系统才会认为是同一组的,而同一组的单选按钮才能实现“单选”的效果。比如:

<form>
<input name="bgcolor" type=radio value="red">红
<input name="bgcolor" type=radio value="green">绿
<input name="bgcolor" type=radio value="blue">蓝
</form>

<script>
window.onload=function(){
   var body=document.getElementsByTagName("body")[0];
   var obj=document.getElementsByName("bgcolor");
   for(i=0;i<obj.length;i++){
      obj[i].onclick=function(){
         body.style.backgroundColor=this.value;
      }
   }
}
</script>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式