2011-07-10 55 views
1

每當我將一個數組傳遞給此函數時,當它遇到空或未定義的值時,它會停止循環。我無法弄清楚如何解決這個問題。當我問在迴路當前項目是否爲空或未定義或假,沒有回答......空值跳轉循環

function xul(func, loc, arr){ 
var elem; 
var props = {}; 

for (var i = 0, len = arr.length; i < len; i++){ 
    if (arr[i] == undefined) { 
     jsdump("undefined" + " - " + len); 
    } 
    else if (arr[i] == null) { 
     jsdump("null" + " - " + len); 
    } 
    else if (arr[i] == false) { 
     jsdump("false" + " - " + len); 
    } 
    else if (typeof arr[i] == "string"){ 
     elem = arr[i]; 
     if (typeOf(arr[i + 1]) == "object") { 
      props = arr[i+1]; 
      i++; 
     } 
     loc = createNode(func, loc, elem, props); 
    } 
    if (typeOf(arr[i + 1]) == "array") { 
     xul("append", loc, arr[i+1]); 
    } else { 
     return loc; 
    } 
} 
} 

這到底是怎麼回事?

+0

你確定數組本身不爲空? –

+1

你有什麼錯誤嗎? – SLaks

+1

'typeof'永遠不能返回'array' – SLaks

回答

3

其實循環停止在這裏(如果返回的東西,你退出循環!):

if (typeOf(arr[i + 1]) == "array") { 
    xul("append", loc, arr[i+1]); 
} else { 
    return loc; 
} 

如果下一個元素它不是,它返回一個祿陣列和循環停止。檢查此琴:http://jsfiddle.net/g8SVJ/它會記下兩個不確定的,然後返回祿

您還應該使用的===代替==

+0

哈哈......我只是在額頭上打我的自我......我不知道我是怎麼錯過的! – cybermotron