从FOR循环生成变量列表

时间:2014-04-09 16:35:06

标签: javascript variables for-loop

     var select = [];
        for (var i = 0; i < nameslots; i += 1) {
              select[i] = this.value;
        }

这是我的代码的摘录。我想生成一个变量列表(select1,select2等,具体取决于for中的nameslots的长度。

这似乎不起作用。我怎样才能做到这一点?如果您需要完整的代码我可以发布。

编辑:此特定功能的完整代码。

//name and time slots
function gennametime() {
    document.getElementById('slots').innerHTML = '';
    var namelist = editnamebox.children, slotnameHtml = '', optionlist;
    nameslots = document.getElementById('setpresentslots').value;
    for (var f = 0; f < namelist.length; f += 1) {
        slotnameHtml += '<option>'
                          + namelist[f].children[0].value
                          + '</option>';
    };
    var select = [];
    for (var i = 0; i < nameslots; i += 1) {
        var slotname = document.createElement('select'),
            slottime = document.createElement('select'),
            slotlist = document.createElement('li');
        slotname.id = 'personname' + i;
        slottime.id = 'persontime' + i;
        slottime.className = 'persontime';
        slotname.innerHTML = slotnameHtml;        
        slottime.innerHTML = '<optgroup><option value="1">00:01</option><option value="2">00:02</option><option value="3">00:03</option><option value="4">00:04</option><option value="5">00:05</option><option value="6">00:06</option><option value="7">00:07</option><option value="8">00:08</option><option value="9">00:09</option><option value="10">00:10</option><option value="15">00:15</option><option value="20">00:20</option><option value="25">00:25</option><option value="30">00:30</option><option value="35">00:35</option><option value="40">00:40</option><option value="45">00:45</option><option value="50">00:50</option><option value="55">00:55</option><option value="60">1:00</option><option value="75">1:15</option><option value="90">1:30</option><option value="105">1:45</option><option value="120">2:00</option></optgroup>';
        slotlist.appendChild(slotname);
        slotlist.appendChild(slottime);
        document.getElementById('slots').appendChild(slotlist);
        (function (slottime) {
            slottime.addEventListener("change", function () {

                select[i] = this.value;
            });
        })(slottime);
    }

}

2 个答案:

答案 0 :(得分:1)

你必须在IIFE中关闭迭代器

(function (slottime, j) {
    slottime.addEventListener("change", function () {
         select[j] = this.value;
    });
})(slottime, i);

并且仅在元素实际更改时才更新

答案 1 :(得分:0)

JavaScript数组的一个很酷的事情是你可以在事后添加内容。

var select = [];
for(var i = 0; i < nameSlots; i++) {
    var newValue = this.value;

    // Push appends the new value to the end of the array.
    select.push(newValue); 
}