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中运行良好。
答案 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应该适用。