onclick javascript函数在IE中不起作用

时间:2012-10-23 05:15:55

标签: javascript onclick

var myButton = document.getElementsByTagName("input");

myButton[0].onclick = function() {
  if(ansArray[0] == 'a')
    myButton[0].style.backgroundColor = "green";
  else
    myButton[0].style.backgroundColor = "red";
}

myButton[1].onclick = function() {
  if(ansArray[0] == 'b')
    myButton[1].style.backgroundColor = "green";
  else
    myButton[1].style.backgroundColor = "red";
}

onclick 功能在上面的示例(IE9)中无效,但它们在Chrome和Firefox中运行良好。

2 个答案:

答案 0 :(得分:1)

问题是当您尝试访问按钮时,您的DOM尚未加载。在window.load中包装你的onclick处理程序,一切都应该正常工作:

window.onload = function () {
    var myButton = document.getElementsByTagName("input");

    myButton[0].onclick = function() {
        if(ansArray[0] == 'a') {
            myButton[0].style.backgroundColor = "green";
        } else {
            myButton[0].style.backgroundColor = "red";
        }
    }

    myButton[1].onclick = function() {
        if(ansArray[0] == 'b') {
            myButton[1].style.backgroundColor = "green";
        } else {
            myButton[1].style.backgroundColor = "red";
        }
    }
}

我真的很惊讶这项工作在Webkit和Mozilla下。我创建了一个小型演示fiddle。在所有情况下,在所有浏览器中,对象在加载之前都为null,除非脚本块位于您在正文中访问的元素之后。

请注意,getElementsByTagName在不同浏览器中的反应方式存在差异,但与getElementById不同:fiddle

另一个替代方案是不等待window.onload等待document.body因为window.onload在加载所有内容(包括图片)后发生。

function Start() {
    if (document.body) {
        var myButton = document.getElementsByTagName("input");

        myButton[0].onclick = function() {
            if(ansArray[0] == 'a') {
                myButton[0].style.backgroundColor = "green";
            } else {
                myButton[0].style.backgroundColor = "red";
            }
        }

        myButton[1].onclick = function() {
            if(ansArray[0] == 'b') {
                myButton[1].style.backgroundColor = "green";
            } else {
                myButton[1].style.backgroundColor = "red";
            }
        }
    }
}

setInterval(Start, 50); // 50 ms is a small enough interval to retry

答案 1 :(得分:0)

我在这里使用的答案Javascript onclick functions do not work应该适用。