3

json 和 js 中的新功能,所以如果有人能教我一点,我会很高兴。json数组:

var info = [
{"t":"09:00","b":"Vaba"},
{"t":"09:30","b":"Vaba"}  ] ;

和 JS 部分:

var output='';      
for (var i = 0; i <= info.length; i++) {
    for (info.t of info[i] ) {
        output += '<option> '  + info[i].t + ' ' + info[i].b + '</option>';  } };

    var update = document.getElementById('start_time');
    update.innerHTML = output;

我在 HTML 中得到的结果如下所示:

<option>9.00 Vaba</option>
<option>9.00 Vaba</option>
<option>9.30 Vaba</option>
<option>9.30 Vaba</option> 

这是迄今为止我找到的唯一可行的解​​决方案,但我不需要双重列表(时间和文本字符串两次)。编写任何函数而不是第二个 for 循环都会以错误 info[i] undefined... 结尾

提前谢谢。

4

3 回答 3

1

只需删除您的额外for循环。还要小心在info. 当i = info.length,info[i]越界。只要确保它永远不会那么远:

var output='';      
for (var i = 0; i < info.length; i++) {
    output += '<option> '  + info[i].t + ' ' + info[i].b + '</option>';  
}

var update = document.getElementById('start_time');
update.innerHTML = output;
于 2013-10-07T14:26:04.877 回答
0

试试这个,它会花费更少的执行时间,也会照顾内存。

var optionList=[];  
var len= info.length;   
for (var i = 0; i < len; i++) {
    optionList.push('<option> '  + info[i].t + ' ' + info[i].b + '</option>');  
}

var update = document.getElementById('start_time');
update.innerHTML = optionList.join('');
于 2013-10-07T15:12:10.490 回答
0

谢谢大家的回复,最终的解决方案是jquery each()

于 2013-10-08T15:23:25.897 回答