简单的JavaScript错误(未定义)

时间:2014-01-11 20:22:50

标签: javascript

在下面的代码中我有一个错误(Uncaught ReferenceError: devildead is not defined)为什么会这样?我试图移动在同一个地方删除另一个元素之后创建的元素。所有的工作,除非我添加移动该新元素的代码行。

function shoot(e){
        // alert(e.clientX+":"+e.clientY)
        devil=document.querySelectorAll('.devil')

        for(i=0;i<devil.length;i++)
        {
          if (e.clientX>parseInt(devil[i].style.left) )
            if(e.clientY>parseInt(devil[i].style.top) )
              if(e.clientX<parseInt(devil[i].style.left)+75 )
                if(e.clientY<parseInt(devil[i].style.top)+75 )
                 {             
                  topbird=devil[i].style.top
                  leftbird=devil[i].style.left
                  devil[i].parentNode.removeChild(devil[i])
                   die.play();
                   o=document.createElement('img');
                   o.src="img/birddead.png";
                   box.appendChild(o);
                  o.setAttribute("class","devildead");
                  o.style.left=leftbird;
                  o.style.top=topbird;
                      //Starting from here i have an error
                      var delay =1;
                      var top = document.getElementsByClassName("devildead")[i];
                      var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);               

                      setTimeout(move, delay);
                      function move(){
                        if (currentTop <= 400  ) {
                          currentTop+=2;
                          left.style.top = currentTop + "px";            
                          setTimeout(move, delay); 
                        }
                      }

                 };
        }

4 个答案:

答案 0 :(得分:0)

很简单,它发生的原因是你试图在这一行上访问一个未定义的数组(devildead):

var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);

我怀疑实际上应该(基于上面的一行):

var currentTop = parseInt(getComputedStyle(devil[i]).top, 10);

答案 1 :(得分:0)

您将devildead称为此行中的变量:

var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);               

您尚未在任何地方定义它,因此当您尝试访问它时会出现错误。

答案 2 :(得分:0)

在这一行:

var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);               

你指的是“魔鬼”&#39;作为一个对象,但它不是一个对象。有一个元素,其className是&#39; devildead&#39;,但您从未将其转换为Javascript对象。

答案 3 :(得分:0)

devildead数组没有定义,没有附带的html它很难。

看起来你需要在你的数组上面定义的devildead。

function shoot(e){
// alert(e.clientX+":"+e.clientY)
    devil=document.querySelectorAll('.devil');

    // Insert new array
    var devildead = document.getElementsByClassName("devildead");
    for(i=0;i<devil.length;i++)
    {