问题是当您尝试访问按钮时,您的 DOM 尚未加载。将您的 onclick 处理程序包装在 window.load 中,一切都应该正常工作:
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 下工作。我创建了一个小型演示小提琴。在所有情况下,在所有浏览器中,对象在加载前都显示为 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