0

ここで達成しようとしているのは、電話を振るたびにアラートが表示されるようにすることです。しかし、次のようなエラーが表示され続けます。

キャッチされていない TypeError: 未定義のメソッド 'addEventListener' を呼び出せません

「シェイク」を知らないからでしょうか。複数のシェイクの理由は、どのシェイクに応じて異なるアニメーションを追加するためです。

 <!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>

4

1 に答える 1

1

あなたのコードは、1 つの小さな問題を除けば問題ないように見えます。forループが終了しません。

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

する必要があります

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

が未定義であり、存在しない要素のメソッドを呼び出そうとしているため、エラーが発生していますianswer.lengthanswer[i]answer[i].addEventListener

幸運を。

于 2012-11-28T04:51:57.480 に答える