2012-09-21 115 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可能会设置为'