2010-12-10 25 views
0

[i](存在する場合は値[i]、任意の値)または実行する別の部分がある場合に実行するスクリプトを実行しようとしています。誰も私を育てることができますか?[i]が存在するかどうかを確認する

私は、forループについて

for(var i=0;i<data.length;i++){ 
if(var i == doesnt exist){ 
code1 runs 
} 
else{ 
code2 runs 
} 

のようなものHERESにHTMLのコード

<script> 
function funfacts(o){ 
    var facts = document.getElementById('funfacts'); 
    var data = o.query.results.a; 
    for(var i=0;i<data.length;i++){ 
     var out = document.createElement('a'); 
     facts.appendChild(out); 
     out.href = data[i].href; 
     out.innerHTML = data[i].alt; 
     out.appendChild(document.createElement('br')); 
    } 
} 
</script> 
+0

'data [i]'には何が必要ですか?既存の要素をループしているので存在します。ヌルかどうか知りたいですか? –

+0

はい、私はそれがヌルか、コードの残りの部分を進める前に存在しないかどうかを知る必要があります。 – Shadow

+0

データ配列/オブジェクトの要素であるため、**存在しないことはできません。あなたは、その存在についてどのようにテストするかを知るために、データの中で何を期待するか教えてください。 –

答えて

1
for(var i=0;i<data.length;i++){ 
    if(data[i]){ 
    code1 runs 
    } else { 
    code2 runs 
    } 
} 

これは、配列を反復していることを前提としていて、その配列内のオブジェクトの一部はnullです。それ以外の場合は、このループは最後の配列インデックスを超えて実行されることはありませんので、実際にアレイにnullがない限り、安全に保護する必要はありません。

JavaScriptがゼロであるとみなされるため、これもゼロで失敗することに注意してください。

if (typeof(data[i]) === 'undefined') { 
:これはあなたのケースで問題がある場合は、 null

​​

そして、あなたが配列経由ですべてのインデックスの値を持っているかどうかを確認することができますループの外でそれを比較することができます

これは、そのインデックスに値があるかどうかを確認します。偽、ゼロ、ヌルなどの値で、このテストが合格することがあります。

しかし、このループの内部では、配列境界内にあることが保証されています。

+0

トリックはしません。つまり、何もしません:S – Shadow

0
if(var i != null) 

あなたはまた、あなた

のための仕事をしてやる必要があると話しています見てみたいHow do I setup an "if object exists" condition?

+0

動作しません。リンクを読み込んでいますが、まだ動作しません。 – Shadow

0

前に行を作成したばかりの場合はどうしたらいいですか?

それはでループ内で未定義に設定されているかどうかをチェックすることができます

for(var i=0;i<data.length;i++){ 
    if(i){ 
     //code1 runs 
    } 
    else{ 
    //code2 runs 
    } 
} 
1

あなたのコード:おそらく、あなたはこのことを意味

for(var i=0;i<data.length;i++){ 
    code2 runs 
} 

for(var i=0;i<data.length;i++){ 
    if(var i == doesnt exist){ 
     code1 runs // this will never be executed 
    } 
    else{ 
     code2 runs 
    } 
} // I don't see this brace in your code, so I assume it's here 

は同等です:

if(data.length == 0) { 
    code2 runs 
} 
else { 
    for(var i=0;i<data.length;i++){ 
     code 1 runs 
    } 
} 
関連する問題