从FOR循环生成变量列表

generate list of variables from a FOR loop

本文关键字:变量 列表 FOR 循环      更新时间:2023-09-26
     var select = [];
        for (var i = 0; i < nameslots; i += 1) {
              select[i] = this.value;
        }

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

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

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

//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);
    }
}

您必须在迭代器中以及在IIFE 中关闭

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

只有当元素实际更改时才会更新

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); 
}