1

関数を実行しましたが、その一部が機能しない理由がわかりません。

実際には、className と Id を使用してメソッドを使用します。

コードの一部は次のとおりです。

 var items = new Array();
 var itemCount = document.getElementsByClassName("items");

 for(var i = 0; i < itemCount.length; i++)
 {
     items[i] = document.getElementById("p"+(i+1)).value;
 }

 return items;
 }

そして、jsfiddle には、この Id が存在することを示す html 部分があります。

したがって、このエラーは返されません。

キャッチされていない TypeError: null のプロパティ '値' を読み取れません fiddle.jshell.net:402

関連する行は次のとおりです。

items[i] = document.getElementById("p"+(i+1)).value;

4

3 に答える 3

2

だということだ:

document.getElementById("p"+(i+1))

nullいくつかのループ反復で戻ります。つまり、要素は存在しません。.value次に、からプロパティを取得しようとするとnull、例外がスローされます。

アップデート

コードを正しく読むと、p7欠落しています。次のように確認できます。

var elem = document.getElementById("p"+(i+1));
if ( !elem ) {
    alert('p'+(i+1)+' is missing!');
}
于 2012-10-05T09:21:25.660 に答える
1

これは、最後の要素 i+1 で発生します。それを変更するだけです。

for(var i = 0; i < itemCount.length; i++)
{
alert("i"+i+" "+document.getElementById("p" + (i+1)).value);
 items[i] = document.getElementById("p" + (i+1)).value;
 }

これは 5 番目の要素、つまり p6 まで実行されます。示されているように、p7 はサーバー コード自体にありません。

于 2012-10-05T09:23:31.813 に答える
1

あなたのフィドルには、id p7 がなく、p8 が 2 回ある td 要素があります。それはあなたのフィドルの例だけですか、それとも実際のコードでも同じですか? コードにも含まれている場合は、問題があります。これらの ID の 1 つを p7 に修正する必要があります。

于 2012-10-05T09:26:33.403 に答える