2016-11-20 7 views
-2

は、以下のJS-ループを検討エラーをスローそれがうまくいかない理由を理解していない。 "old_row_num + 1 + i"の代わりに固定番号を入れても、エラーはありません(しかし私のプログラムには柔軟性が必要です)。t_body.children [K] .appendChild(VAR)は

UPDATE:次のように

全体の機能が見えます:私はあなたの古い行番号が不正確である

function change_dim_r(diff) { 

      var old_row_num = t_body.childElementCount; 
      var old_col_num = t_body.children[0].childElementCount; 

      for (var i=0; i<diff; ++i){ 
       var new_t_row = document.createElement("tr"); 
       t_body.appendChild(new_t_row); 
      } 

      for (var i=0;i<diff;++i){ 
       for (var j=0; j<old_col_num; ++j){ 
        var t_col = document.createElement("td"); 
        t_body.children[old_row_num+1+i].appendChild(t_col);  
       } 
      } 
} 
+2

'diff'と何' old_col_num'、と 't_body'は何ですか? –

+1

おそらく子供がいないので未定義です... – Li357

+0

ここにスクリーンショットを追加できますか? –

答えて

1

と信じています。

var old_row_num = t_body.children.childElementCount; 

行数が必要な場合は、.childrenを入力します。

function change_dim_r(diff) { 
 

 
    var t_body = document.querySelector("tbody"); 
 
    var old_row_num = t_body.childElementCount; 
 
    var old_col_num = t_body.children[0].childElementCount; 
 

 
    for (var i = 0; i < diff; ++i) { 
 
    var new_t_row = document.createElement("tr"); 
 
    t_body.appendChild(new_t_row); 
 
    } 
 

 
    for (var i = 0; i < t_body.childElementCount; ++i) { 
 
    var t_row = t_body.children[i]; 
 
    
 
    for (var j = t_row.childElementCount; j < t_body.childElementCount; ++j) { 
 
     var t_col = document.createElement("td"); 
 
     t_row.appendChild(t_col); 
 
    } 
 
    } 
 
} 
 

 
change_dim_r(10);
<table border="1" cellpadding="2" cellspacing="2"> 
 
    <tbody> 
 
    <tr> 
 
     <td></td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

あなたは正しいですが、私はそれを修正しました...しかし、私はまだ同じエラーメッセージを受け取ります –

+0

あなたのコードスニペットが機能します....私のコードはまだ...私はそれを取得しません –

+1

あなたが作成するループあなたは私がその部分を別々にやっているのを見るでしょう。私はどこでもold_row_numまたはold_col_numを使用していません。私は単純にt_bodyの行数から抜け出し、行数よりも少ないセルがある限り、新しいセルを作成しています。元のループをデバッグしたい場合は、コンソールにログアウトします。使用しているiとj、およびインデックスに使用している合計をログアウトします。あなたのループはどこにでも 'j'を使用していないと言っても過言ではありません。 – Taplar