2016-07-26 3 views
-3

をループで愚かなエラー:blog.niftysnippets.org/2010/11/myths-and-realities-of-forin.html を少し配列作成:私はちょうど記事について<code>for in</code>文の読みアレイ

<script> 
var stuff, index; 
stuff = ['a', 'b', 'c']; 
stuff.name = "Foo"; 
for (index in stuff) { 
x = document.getElementById("demo") 
     x.innerHTML = console.log("stuff[" + index + "] = " + stuff[index]) 
} 

</script> 

しかし、それは動作しませんが。誰かが私に何が間違っているかを見せてもらえるか?

+2

動作しませんでしょうか? –

+1

何が問題なのですか? –

+2

[私のための作品](https://jsfiddle.net/900cfufk/)。それは少し奇妙です:コンソールに出力し、要素のHTMLを '' undefined ''に繰り返し設定します(' console.log'は何も返しません)。しかし、私がそのブログ記事で言うようにしようとすると、本当に良い理由がない限り、これにはfor-inを使わないでください。関連する質問はここにあります:[* JavaScriptの配列には?*](http://stackoverflow.com/questions/9329446/for-each-over-an-array-in-javascript) –

答えて

1

あなたはかつての結果に結果を追加し、console.logの呼び出しを変更して、表示のための休憩を追加する必要があります。

var stuff = ['a', 'b', 'c'], 
 
    index, 
 
    x = document.getElementById("demo"); 
 

 
stuff.name = "Foo"; 
 
for (index in stuff) { 
 
    x.innerHTML += "stuff[" + index + "] = " + stuff[index] + '<br>'; 
 
    //   ^^           ^^^^^^^^ 
 
}
<div id="demo"></div>

0

console.logは、コンソールのHTMLコンテンツを設定します

innerHTMLにログインします。

これは2つの異なる操作です。

そして、文字列にhtmlコンテンツを設定する場合は、1つの文字列を作成してinnerHTMLに設定することをお勧めします。これはdom操作/操作を減らします。

var stuff, index; 
 
stuff = ['a', 'b', 'c']; 
 
stuff.name = "Foo"; 
 
var str = ""; 
 

 
for (index in stuff) { 
 
    console.log("stuff[" + index + "] = " + stuff[index]) 
 
    str += "stuff[" + index + "] = " + stuff[index] + "<br/>"; 
 
} 
 
x = document.getElementById("demo"); 
 
x.innerHTML = str;
<div id="demo"></div>

+0

これを削除できますか?console.log( "stuff [" + index + "] =" + stuff [index]) ? –

+0

コンソールに何も記録しない場合は、削除できます。 –

0

まず、あなたはにconsole.log funcitonするinnerHTMLプロパティを定義することはできません。 この関数は、入力した文字列を返しません。だからそれは未定義です。 次に、ループごとにinnerHTMLをオーバーライドします。スタックする場合は、文字列を連結する必要があります。 そして、同じ場合は、すべてのループでdocument.getElementByIdを呼び出す必要はありません。

<script> 
var stuff, index; 
stuff = ['a', 'b', 'c']; 
stuff.name = "Foo"; 
var x = document.getElementById("demo"); 
for (index in stuff) { 
    var string = "stuff[" + index + "] = " + stuff[index]; 
    console.log(string); 
    x.innerHTML +=string ;  
} 

</script> 
0

私の推測は、DOMがロードされる前にあなたのコードを実行することである(より具体的にid="demo"を持つ要素)ので、あなたはJavaScriptコンソール(多くのブラウザでF12)を開く場合は、表示されます苦情についてx.innerHTMLのような:

TypeError: x is null

私が間違っている場合でも、このコードは、コンソールの本当に認識していないと、ページ自体には発生しません、何かを出力を期待ことを示唆している:

x.innerHTML = console.log("stuff[" + index + "] = " + stuff[index]); 

これは、あなたがやるべきことのすべてです:

console.log("stuff[" + index + "] = ", stuff[index]); 

を(文字列に型キャストを避けるために、追加のカンマを注意してください。)

関連する問題