2014-01-11 59 views
-1

在下面的代碼中,我有一個錯誤(Uncaught ReferenceError: devildead is not defined)爲什麼這麼說?我試圖移動在另一個元素被刪除後創建的元素。所有作品除了當我添加移動新元素的代碼行。簡單的JavaScript錯誤(未定義)

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

       }; 
     } 
+0

您var currentTop = parseInt(getComputedStyle(devildead [i])。top,10); – JustEngland

+0

devildead看起來是var top中的一個字符串,而是var currentTop中的一個變量。由於惡魔沒有被定義爲一個對象,它會出錯。 –

回答

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++) 
    { 
0

很簡單,它的發生是因爲你試圖在這條線訪問一個未定義的數組(devildead):

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

我懷疑實際上應該(基於它上面的線):

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

那麼我應該添加什麼代碼工作? – Chris

+0

這取決於'devildead'應該包含什麼? – BenM

+0

它與魔鬼[i]完全一樣,它包含了所有類「devildead」的圖像 – Chris

0

你指的是devildead作爲此行的變量:

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

您尚未將其定義在任何位置,因此您在嘗試訪問時遇到錯誤。

+0

那麼我應該添加什麼代碼工作? – Chris

+0

「代碼工作」非常廣泛 - 我不確定你的函數試圖做什麼,所以我不能確切地告訴你什麼是正確的。我可以告訴你爲什麼你會得到你的錯誤,希望能給你一些見解,讓你知道你應該做什麼。您可以「刪除」該行來刪除該錯誤,但這可能是也可能不是您想要的邏輯。 – Krease

+0

對我來說,如果你能給我你的Skype給我看我的代碼,對於一箇中等的JavaScript編碼器我有另一個問題很容易,我不知道如何問這裏:)如果你有一些時間,謝謝你。 – Chris

0

在這一行:

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

你指的「devildead」作爲一個對象,但它不是一個對象。有一個元素的className是'devildead',但是你從來沒有把它變成一個Javascript對象。