2014-01-11 3 views
-1

다음 코드에서 오류가 발생했습니다 (Uncaught ReferenceError: devildead is not defined). 같은 위치에서 다른 요소를 삭제 한 후에 만들어진 요소를 이동하려고합니다. 모든 새로운 요소를 이동하는 코드 줄을 추가 할 때 제외한 작품.간단한 JavaScript 오류 (정의되지 않음)

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

내가 그 사실 (위의 라인에 따라)해야한다 의심 :이 줄에 정의되지 않은 배열 (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); 
         } 
         } 

       }; 
     } 
+0

당신은 var currentTop = parseInt (getComputedStyle (devildead [i]). – JustEngland

+0

devildead는 var top의 문자열이지만 var currentTop의 변수처럼 보입니다. devildead는 객체로 정의되지 않았으므로 오류가 발생합니다. –

답변

0

devildead 어레이는 정의되지 않았으므로 그와 함께 제공되는 html이 없어도 어렵습니다.

배열 위에 정의 된 악마가 필요합니다.

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

는 간단히 말해서, 그것은 발생

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

그래서 코드 작업에 무엇을 추가해야합니까? – Chris

+0

'devildead '에 어떤 내용이 포함되어야 하는가에 따라 달라질 수 있습니까? – BenM

+0

그것은 devil [i]와 정확히 동일합니다.이 이미지는 "devildead"클래스의 모든 이미지를 포함합니다 – Chris

0

당신은이 라인에서 변수로 devildead를 참조하고 있습니다 :

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

어디에도 정의하지 않았으므로 액세스하려고 할 때 오류가 발생합니다. 이 라인에서

+0

그래서 코드 작업에 무엇을 추가해야합니까? – Chris

+0

"코드 작업"은 꽤 광범위합니다. 당신의 기능이 무엇을 하려는지 확신 할 수 없기 때문에, 옳은 것을 확실히 말할 수는 없습니다. 나는 왜 당신이 오류를 얻고 있는지 말할 수 있습니다. 그것은 당신에게 당신이 무엇을해야 하는지를 알기위한 통찰력을 줄 수 있기를 바랍니다. 오류를 제거하기 위해 줄을 "삭제"할 수는 있지만, 실제로는 논리적으로 원하는 것일 수도 있고 아닐 수도 있습니다. – Krease

+0

내게 당신이 내 코드를 보여주기 위해 당신의 스카이 프를 줄 수 있다면 나에게 매우 유용 할 것이다. 나는 중간 자바 스크립트 코더에 대한 또 다른 문제를 쉽게 가지고있다. 나는 여기에 묻는 법을 모른다. :) 시간이 있다면 고맙다. . – Chris

0

:

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

당신은 객체로 'devildead'을 참조하지만,이 개체가 아닙니다. className이 'devildead'인 요소가 있지만 Javascript 객체로 변환 한 적이 없습니다.

관련 문제