2012-11-27 1 views
0

여기에서 달성하려는 것은 전화가 흔들릴 때마다 나타나도록 경고하는 것입니다. 하지만 난 잡히지 TypeError 말하는 오류가 계속 : 정의되지 않은 'addEventListener'메서드를 호출 할 수 없기 때문에 그것 dosen't '쉐이크'무엇입니까 알아? 하나 이상의 쉐이크가 필요한 이유는 쉐이크에 따라 다른 애니메이션을 추가하기 때문입니다.shake.js를 사용하여 여러 번의 흔들기 만들기 시도

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8" /> 
<meta name="viewport" content="initial-scale=1.0, width=device-width, user-scalable=no" /> 
<meta name="apple-mobile-web-app-capable" content="yes" /> 
<title>Shake animation</title> 
<style type="text/css"> 
body { 
background: #E9E9E9; 
color: #333; 
font: 1em/1.3em "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif; /* 16px/ 21px */ 
text-shadow: rgba(255,255,255,0.8) 0 1px 0; 
text-align: center; 
    } 
    </style> 
    <script type="text/javascript" src="shake.js"></script> 
    </head> 
    <body> 
     <div class="answerListener" id="answer1"></div> 
     <div class="answerListener" id="answer2"></div> 
     <div class="answerListener" id="answer3"></div> 
     <div class="answerListener" id="answer4"></div> 

    <script type="text/javascript"> 
    window.onload = function() { 


    var answer = document.getElementsByClassName('answerListener'); 
    var current = 1; 

    for (i = 0; answer.length; i++) { 
    answer[i].addEventListener('shake', function() { 

    if (current == 1) { 
     alert('shake1'); 
    } 
    if (current == 2) { 
     alert('shake2'); 
    } 
    if (current == 3) { 
     alert('shake3'); 
    } 
    if (current == 4) { 
     alert('shake4'); 
    } 
    current = current + 1; 
    }, false); 
} 
}; 

</script> 
</body> 

답변

1

코드는 하나의 작은 문제를 제외하고 좋아 보인다 : 당신의 for 루프는 종료되지 않습니다

for (i = 0; answer.length; i++) { 

for (i = 0; i < answer.length; i++) { 

오류로 인해을 받고 있어야한다 한번 ianswer.length을 초과하면 answer[i]이 정의되지 않았으므로 answer[i].addEventListener이 존재하지 않는 요소의 메서드를 호출하려고 시도하고 있습니다.

행운을 빈다.

관련 문제