2016-11-15 8 views
4

配列には、(document.create( "input")を使用して)ボタンを配置しました。画面に印刷したいのですが、mainArr [i] [j]という要素を取得できませんでした。私がconsole.log()を実行すると、定義されていないが、スコープの外に出て、私が期待したものを出力します。私はこれを試してみました:Javascriptで多次元arrarから要素を取得する方法

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

       var p = document.createElement('P'); 

       for (var j = 0; j < mainArr[i].length; j++) { 

        element = mainArr[i][j]; 

        p.appendChild(element); 
       } 
       $('#keyPad').append(p); 
      } 

私はこの出力を期待する:以下で

<p> 
       <input type="button" class="sil" value="C" style="width:50px"> 
       <input type="button" class="hepsiniSil" value="AC" style="width:50px"> 
      </p> 
      <p> 
       <input type="button" class="buttons" value="7"> 
       <input type="button" class="buttons" value="8"> 
       <input type="button" class="buttons" value="9"> 
       <input type="button" class="buttons" value="*" > 
      </p> 
      <p> 
       <input type="button" class="buttons" value="4"> 
       <input type="button" class="buttons" value="5"> 
       <input type="button" class="buttons" value="6"> 
       <input type="button" class="buttons" value="-"> 
      </p> 
      <p> 
       <input type="button" class="buttons" value="1"> 
       <input type="button" class="buttons" value="2"> 
       <input type="button" class="buttons" value="3"> 
       <input type="button" class="buttons" value="+"> 
      </p> 
      <p> 
       <input type="button" class="buttons" value="0"> 
       <input type="button" value="=" style="width:50px" onclick='esittir()'> 
       <input type="button" class="buttons" value="/"> 

      </p> 

これがある:

$(document).ready(function() { 

     var butArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '+', '-', '*', '/', '=', 'C', "AC"]; 
     var mainArr = [];   


      $('.createBut').click(function() { 

       var but = document.createElement("input"); 

       var butClass = $('#inputClass').val(); 
       var butValue = $('#inputValue').val(); 
       var butRow = $('#inputRow').val(); 
       var butColumn = $('#inputColumn').val(); 
       var butWidth = $('#inputWidth').val(); 
       var butHeigth = $('#inputHeigth').val(); 
       var butClick = $('#inputClick').val(); 

       but.type = 'button'; 
       but.value = butValue; 
       but.className = butClass; 
       but.style.width = butWidth; 
       but.style.height = butHeigth; 
       //but.onclick = butClick; 

       for (var i = 0; i < 17; i++) { 
        mainArr[butRow] = []; 
        for (var j = 0; j < 17; j++) { 
         mainArr[butRow][butColumn] = but; 

        } 
       } 

}); 
+0

あなた 'mainArr'コンテンツ –

+0

私はあなたが正しく2Dのボタン配列を充填されていません@CommercialSuicide –

+0

共有を共有してください。さらに、配列セルごとに別々のボタン要素を作成する必要があります。そうでない場合は、同じボタンを複数回追加することになり、最後に追加される親の下にボタンが1つだけ表示されます。 – Redu

答えて

0

あなたのコード内の間違いを持っ​​ている - あなたが使用します。

mainArr[butRow][butColumn] = but; 

ここで、butRowbutColumnは、これはあなたの問題を解決する必要があり

変更されません:

for (var i = 0; i < 17; i++) { 
    mainArr[i] = []; 
    for (var j = 0; j < 17; j++) { 
     var but = document.createElement("input"); 
     but.type = 'button'; 
     but.value = butValue; 
     but.className = butClass; 
     but.style.width = butWidth; 
     but.style.height = butHeigth; 
     mainArr[i][j] = but; 
    } 
} 
+0

しかし、私は行と列をユーザーから取って、そのインデックスにボタンを置く必要があります。私は順番に配列を埋めるわけではありません。私はあなたが私に –

+0

を与えるインデックスに応じてそれを埋めるので、なぜあなたはループが必要ですか?それは基本的に同じことをする17 * 17回 – pwolaq

+0

例えば、ユーザーは行= 1列= 2で "3"ボタンを使いたいと思う。これはボタンの数である17回のループが必要だと思う。 –

関連する問題