2012-09-21 80 views
1

當我使用for循環和json對象填充下拉列表時,它在下拉列表中添加了未定義的選項。在for循環中添加了undefined

for (var i in PriceRanges[purpose]) { 
     var r = PriceRanges[purpose][i]; 
     html += '<option value="' + r.id + '">' + r.text + '</option>'; 
} 

其中PriceRanges是我的json對象。 感謝您提前提供任何幫助。

+0

你可以把你的JSON對象嗎?我們需要查看屬性 –

+0

請控制'PriceRange [purpose]'併發布對象內容。 – David

+3

'PriceRanges [purpose]是一個數組還是一個對象?很有可能你得到的'r'值不是你期望的類型,所以'r.text'是'undefined'。這可能是因爲「i」的一個值不符合你的期望。如果'PriceRanges [purpose]'是一個數組,那麼你應該用'for(var i = 0,len = PriceRanges [purpose] .length; i jfriend00

回答

0

只是檢查undfied這樣,比加

for (var i in PriceRanges[purpose]) 
{ 
     var r = PriceRanges[purpose][i]; 
     if (typeof r != "undefined") 
     { 
      if (typeof r.id != "undefined" 
        && typeof r.text != "undefined") 
      html += '<option value="' + r.id + '">' + r.text + '</option>'; 
     } 
} 
0

那是因爲你還沒有定義VAR HTML,它將等於未定義。所以,當你它添加到字符串未定義仍然在連接字符串..

那麼試試這個

var html = ''; 
for (var i in PriceRanges[purpose]) { 
     var r = PriceRanges[purpose][i]; 
     html += '<option value="' + r.id + '">' + r.text + '</option>'; 
} 

這應該解決您的問題....

+0

不,這不是問題:在結尾添加一個未定義的選項==> html可能會設置爲'