我有一个不在函数中的JavaScript:
var numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"];
numbers.sort(function () {
return 0.5 - Math.random();
});
numbers.push("here");
document.getElementById("b1").innerHTML = numbers[0];
document.getElementById("b2").innerHTML = numbers[1];
document.getElementById("b3").innerHTML = numbers[2];
document.getElementById("b4").innerHTML = numbers[3];
document.getElementById("b5").innerHTML = numbers[4];
document.getElementById("b6").innerHTML = numbers[5];
document.getElementById("b7").innerHTML = numbers[6];
document.getElementById("b8").innerHTML = numbers[7];
document.getElementById("b9").innerHTML = numbers[8];
document.getElementById("b11").innerHTML = numbers[9];
document.getElementById("b12").innerHTML = numbers[10];
document.getElementById("b13").innerHTML = numbers[11];
document.getElementById("b14").innerHTML = numbers[12];
document.getElementById("b15").innerHTML = numbers[13];
document.getElementById("b16").innerHTML = numbers[14];
document.getElementById("b10").innerHTML = numbers[15];
document.getElementById("b10").style.backgroundColor = "white";
但它不起作用。我知道它可以工作到第三行的末尾,但没有一个按钮(具有id b1,b2,b3 ......的按钮)说什么。
当我将其更改为:
var numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"];
numbers.sort(function () {
return 0.5 - Math.random();
});
numbers.push("here");
function buttonClick() {
document.getElementById("b1").innerHTML = numbers[0];
document.getElementById("b2").innerHTML = numbers[1];
document.getElementById("b3").innerHTML = numbers[2];
document.getElementById("b4").innerHTML = numbers[3];
document.getElementById("b5").innerHTML = numbers[4];
document.getElementById("b6").innerHTML = numbers[5];
document.getElementById("b7").innerHTML = numbers[6];
document.getElementById("b8").innerHTML = numbers[7];
document.getElementById("b9").innerHTML = numbers[8];
document.getElementById("b11").innerHTML = numbers[9];
document.getElementById("b12").innerHTML = numbers[10];
document.getElementById("b13").innerHTML = numbers[11];
document.getElementById("b14").innerHTML = numbers[12];
document.getElementById("b15").innerHTML = numbers[13];
document.getElementById("b16").innerHTML = numbers[14];
document.getElementById("b10").innerHTML = numbers[15];
document.getElementById("b10").style.backgroundColor = "white";
}
当用户按下任何按钮时,将调用函数buttonClick,当我按下其中一个按钮时,会将这些单词添加到按钮中。有谁知道它为什么只能在函数内部工作以及如何更改它以使它在函数之外工作?
答案 0 :(得分:5)
我想这是因为在运行该代码时,这些元素不在DOM中。您可以将其置于window.onload
事件中或使用jQuery的$(document).ready()
函数。
或者,您可以将此代码添加到<head>
或在结束</body>
标记之前,它应该有效。
答案 1 :(得分:2)
当JS执行时,DOM可能还没有完成渲染。
将JS放在<body>
标记的末尾。那你就不需要这个功能。
如果您只是寻求现代浏览器支持,请执行以下操作。不需要jQuery!
document.addEventListener('DOMContentLoaded',function(){
var numbers=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"];
numbers.sort(function() {return 0.5 - Math.random()});
numbers.push("here");
document.getElementById("b1").innerHTML=numbers[0];
document.getElementById("b2").innerHTML=numbers[1];
document.getElementById("b3").innerHTML=numbers[2];
document.getElementById("b4").innerHTML=numbers[3];
document.getElementById("b5").innerHTML=numbers[4];
document.getElementById("b6").innerHTML=numbers[5];
document.getElementById("b7").innerHTML=numbers[6];
document.getElementById("b8").innerHTML=numbers[7];
document.getElementById("b9").innerHTML=numbers[8];
document.getElementById("b11").innerHTML=numbers[9];
document.getElementById("b12").innerHTML=numbers[10];
document.getElementById("b13").innerHTML=numbers[11];
document.getElementById("b14").innerHTML=numbers[12];
document.getElementById("b15").innerHTML=numbers[13];
document.getElementById("b16").innerHTML=numbers[14];
document.getElementById("b10").innerHTML=numbers[15];
document.getElementById("b10").style.backgroundColor="white";
});