Javascript 未捕获引用错误:未定义spanArray

Javascript 未捕获引用错误:未定义spanArray,javascript,Javascript,我想做一个按钮来启动onclick,让随机数继续运行 或2.呼叫),但如果我按下它,错误消息显示“未捕获” ReferenceError:spanArray未定义“但上面的数字仍在运行,我无法 了解哪里是错误的地方 PS但是如果我使用3它工作正常 谢谢 thx完整的代码,我尝试由3是 功能计算机和OM(){ //跳过代码:已经使用loop创建了六个跨距 var spanArray=document.getElementsByTagName(“span”); //1.文件。填写(“”); //2.

我想做一个按钮来启动onclick,让随机数继续运行

  • 或2.呼叫),但如果我按下它,错误消息显示“未捕获”
  • ReferenceError:spanArray未定义“但上面的数字仍在运行,我无法

    了解哪里是错误的地方

    PS但是如果我使用3它工作正常

    谢谢

    thx完整的代码,我尝试由3是

    功能计算机和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);
    }