为什么Click事件没有调用我的函数

时间:2015-10-08 11:23:21

标签: javascript html

我不知道为什么click事件没有调用btn()函数。



function btn() {
    var radio = document.getElementsByTagName("input");
    for (var i = 0; i > radio.length; i++){
		if (radio[i].checked){
			alert(radio[i].value);
		}
      else{
        alert("lol");
      }
	}
}

<input name="r" value="1" type="radio">
<input name="r" value="2" type="radio">
<input name="r" value="3" type="radio">
<button onclick="btn()">hm</button>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:4)

  

我不知道为什么click事件没有调用btn()函数。

它只是因为它有逻辑错误而永远不会进入你的循环

for (var i = 0; i > radio.length; i++){

i 从不大于radio.length。这应该是一个不到标志

for (var i = 0; i < radio.length; i++){

答案 1 :(得分:2)

检查此行:

for (var i = 0; i < radio.length; i++){

&#13;
&#13;
function btn() {
    var radio = document.getElementsByTagName("input");
    for (var i = 0; i < radio.length; i++){
		if (radio[i].checked){
			alert(radio[i].value);
		}
      else{
        alert("lol");
      }
	}
}
&#13;
<input name="r" value="1" type="radio">
<input name="r" value="2" type="radio">
<input name="r" value="3" type="radio">
<button onclick="btn()">hm</button>
&#13;
&#13;
&#13;

答案 2 :(得分:2)

您的处理程序确实运行,它的for循环错误。它永远不会迭代,因为i > radio.length它应该是i < radio.length

我还想使用html onclick来添加绑定事件,这不是一个好主意。建议最好使用addEventListener

document.getElementById('goBtn').addEventListener('click', btn);

这使您可以更好地控制已绑定的事件,允许您轻松删除它们并为同一事件添加多个。

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Why_use_addEventListener

请参阅小提琴:http://jsfiddle.net/j375r0gs/