简单JavaScript错误(未定义)

简单JavaScript错误(未定义),javascript,Javascript,在下面的代码中,我有一个错误(uncaughtreferenceerror:devildead未定义)为什么?我正在尝试移动在同一位置删除另一个元素后创建的元素。除了添加用于移动新元素的代码行外,所有操作都有效 function shoot(e){ // alert(e.clientX+":"+e.clientY) devil=document.querySelectorAll('.devil') for(i=0;i<devil.lengt

在下面的代码中,我有一个错误(
uncaughtreferenceerror:devildead未定义)为什么?我正在尝试移动在同一位置删除另一个元素后创建的元素。除了添加用于移动新元素的代码行外,所有操作都有效

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); 
                        }
                      }

                 };
        }
功能射击(e){
//警报(e.clientX+:“+e.clientY)
devil=document.queryselectoral(“.devil”)
对于(i=0;iParSet(恶魔[i].style.left))
if(e.clientY>parseInt(魔鬼[i].style.top))

如果(e.clientX非常简单,则发生这种情况是因为您试图访问此行中未定义的数组(
devilded
):

var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);               
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);               
我怀疑事实上应该是(根据上面的线):


您在这一行中将
devildead
作为变量引用:

var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);               
var currentTop = parseInt(getComputedStyle(devildead[i]).top, 10);               
您没有在任何地方定义它,因此在尝试访问它时会出现错误。

在这一行中:

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

您将“devilded”称为一个对象,但它不是一个对象。有一个元素的类名是“devilded”,但您从未将其转换为Javascript对象。

没有定义devilded数组,如果没有伴随它的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++)
    {
功能射击(e){
//警报(e.clientX+:“+e.clientY)
devil=document.queryselectoral('.devil');
//插入新数组
var-devilded=document.getElementsByClassName(“devilded”);

对于(i=0;iYou var currentTop=parseInt(getComputedStyle(devilded[i])。top,10);devilded在var top中看起来是一个字符串,但在var currentTop中是一个变量。由于devilded未定义为对象,因此会出错。这取决于
devilded
应该包含什么?它与devil[i]完全相同,它包含类中的所有图像“DevilDed”“代码工作”非常广泛-我不确定您的函数试图做什么,因此我无法确定您的正确性。我可以告诉您为什么会出现错误,这将有助于您了解应该做什么。您可以“删除”“删除错误的代码行,但这在逻辑上可能不是您想要的。如果您能给我您的skype以显示我的代码,这将对我非常有用。我有另一个问题,对于中等JavaScript程序员来说很简单,我不知道如何在这里提问:)如果您有时间,谢谢。