2010-12-10 169 views
0

我試圖運行一個腳本,如果[i]存在(意思是存在[i]的值,任何值)或另一部分運行if [i]沒有價值,任何人都能照亮我嗎?檢查[i]是否存在

我講的for循環,像

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

繼承人的代碼的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]'應該是什麼?它會存在,因爲你正在循環現有的元素。你想知道它是否爲空? – 2010-12-10 09:47:51

+0

是的,我需要知道它是空還是不存在,然後繼續執行其餘代碼 – Shadow 2010-12-10 10:07:35

+0

它不能**不存在,因爲它是數據數組/對象的元素。您需要告訴我們在數據中應該看到如何測試它們的存在。 – 2010-12-10 10:11:20

回答

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

這是假設你迭代雖然數組和一些數組中的對象是null。否則,這個循環將永遠不會超過最後一個數組索引,所以沒有必要保護它,除非在數組中實際上有null

請注意,這也會失敗一個零,因爲在javascript中被認爲是零。如果這是你的情況有問題,你可以用null

​​

對照,並在循環外,你可以檢查,看看如果一個數組的索引值都通過:

if (typeof(data[i]) === 'undefined') { 

這將看看在該索引處是否有值,可能是false,零,null或其他任何內容,並且此測試會通過。

但是,在該循環內,它保證在數組範圍內。

+0

沒有辦法,我的意思是,它什麼都不做:S – Shadow 2010-12-10 09:55:25

0

如果你之前只是創建了一行,'i'不能存在嗎?

如果被設置爲undefined內環路您可以檢查:

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

您的代碼:

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 

等同於:

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

也許你的意思是這個:

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