Javascript 未捕获引用错误:未定义spanArray
我想做一个按钮来启动onclick,让随机数继续运行Javascript 未捕获引用错误:未定义spanArray,javascript,Javascript,我想做一个按钮来启动onclick,让随机数继续运行 或2.呼叫),但如果我按下它,错误消息显示“未捕获” ReferenceError:spanArray未定义“但上面的数字仍在运行,我无法 了解哪里是错误的地方 PS但是如果我使用3它工作正常 谢谢 thx完整的代码,我尝试由3是 功能计算机和OM(){ //跳过代码:已经使用loop创建了六个跨距 var spanArray=document.getElementsByTagName(“span”); //1.文件。填写(“”); //2.
功能计算机和OM(){
//跳过代码:已经使用loop创建了六个跨距
var spanArray=document.getElementsByTagName(“span”);
//1.文件。填写(“”);
//2.文件。填写(“”);
//3.setInterval(函数(){keepMove(value,spanArray);},10);
}
函数keepMove(val,sp){//指针调用
var index=parseInt(Math.random()*43);//设置一个增量以避免重复
对于(i=0;i在var span数组
前面的var
正在使span数组
成为一个局部变量。因此,您不能在计算机和OM
的功能范围之外访问它
您需要使其全局化,或者提出更好的设计,这样您就不需要全局变量 但是为什么我在computeRandom中使用setInterval(function(){keepMove(value,spanArray);},10)它工作得很好?因为我只使用它们作为参数来调用computeRandom中的函数,我认为这不关本地或全局的事。我只是一个新手,以上只是我的观点。如果错误,请告诉我.Thx。因为当您创建setInterval
时,变量spanArray在同一范围内。因为当调用它们时,它不在范围内。它从窗口中查找变量,而不是该函数。最好使用createElement、appendChild创建元素并添加onclick。
function computeRandom(){
// skip code: have used loop to create six spans already
var spanArray = document.getElementsByTagName("span");
//1.document.write("<input type = button value = 'start' onclick = \"passKeepMove(value,spanArray) \" name = button1>");
//2.document.write("<input type = button value = 'start' onclick = \"setInterval(function(){keepMove(value,spanArray);}, 10) \" name = button1>");
//3.setInterval(function(){keepMove(value,spanArray);}, 10) ;
}
function keepMove(val,sp){//call by pointer
var index = parseInt(Math.random()*43);//set a increment to avoid repeatition
for( i = 0; i < sp.length; i++){
sp[i].innerHTML = val[i+index];
}
}
function passKeepMove(v,s){
setInterval(function(){keepMove(v, s);}, 10);
}