0

私はそれぞれのインデックスを作成するためにループでxx [this.index]を作成したいと私はそれらのボタンをクリックすると、黄色の色に& divブロックは同時に単語を変更します。なぜそれは動作しません?私は他の人がこの方法を使用するのがうまくいくのを見た。どのようにできるのか?どうもありがとう!ここなぜxx [this.index] .style.displayを使用できないのですか?それは言った "undefinedbtnのプロパティ 'スタイル'を読み取ることはできません"

は私JSFiddleです: http://jsfiddle.net/QCxwr/7

window.onload=function() 
    { 
     var btn = document.getElementsByTagName('input'); 
     var div = document.getElementsByName('div'); 

     for(var i=0;i<btn.length;i++) { 
      btn[i].index = i; 
      btn[i].onclick=function() { 
       for(var i=0;i<btn.length;i++) { 
        btn[i].className = ''; 
        div[i].style.display='none'; 
       } 
       this.className = 'active'; 
       div[this.index].style.display = 'block'; 
      }; 
     } 
    }; 
+2

「getElementsByName」は、あなたが思っているものが得られていません。 –

答えて

0

更新javascriptのコードを見つけてください。 "getElementsByName"を使ってフェッチすると、あなたのDIV配列は0になります。

window.onload=function() 
     { 
      var btn = document.getElementsByTagName('input'); 
      var div = document.getElementsByTagName('div'); 

      for(var i=0;i<btn.length;i++) { 
       btn[i].index = i;alert 
       btn[i].onclick=function() {     
        for(var i=0;i<btn.length;i++) { 
         btn[i].className = ''; 
         div[i].style.display='none'; 
        } 
        this.className = 'active'; 
        div[this.index].style.display = 'block'; 
       }; 
      } 
     }; 
0

thisは、ここでは、ウィンドウを参照します。オブジェクトウィンドウにプロパティインデックスを置かない限り(実際にはアドバイスされていない)、これは機能しません。この関数はオブジェクトのメソッドで実行されている場合

だからあなたは、古典的なトリックを行う必要があるでしょう:

var me = this; 
window.onload=function(){ 
    ... 
    div[me.index].style.display = 'block'; 
} 
0

あなたのDIVの配列が空です。あなたはdivを返すとき

getElementsByTagName 

代わりの

getElementsByName 

を使用することを意味しましたか?

また、アクセスする前に配列の長さを確認する必要があります。

更新されたコードhttp://jsfiddle.net/QCxwr/9/

+0

おっと...はい!ありがとう、私の目はあまりにも疲れている...私は 'タグ'を失った –

関連する問題