如何在for循环中将<option>标记附加到<select>语句?

时间:2018-07-13 19:37:52

标签: javascript html ajax dom

我正在尝试在下拉列表中获取所选

2 个答案:

答案 0 :(得分:2)

一个选择是建立一系列这样的选择:https://codepen.io/anon/pen/jpbKBx

//Javascript
    function myFunction () {

        //get value of selected <option> in a separate <select> drop down
        var type = document.getElementById('_first').value;
        //get the second <select>
        var item = document.getElementById('_second');

        //Clear child nodes from dynamic <select>
        while (item.hasChildNodes()) {
            item.removeChild(item.lastChild);
        }

        //set count variable to know how many <options> there should be in second <select> drop down
        var count;
        var options = [];
        //assess value
        switch (type) {
            case '1': //First case
                var option1 = document.createElement('option');
                    option1.text = 'SomeText1';
                options.push(option1);
                break;
            case '2': //Second case
                var option1 = document.createElement('option');
                    option1.text = 'SomeText2';
                options.push(option1);
                var option2 = document.createElement('option');
                    option2.text = 'SomeText3';
                options.push(option2);
                break;
            case '3': //Third case
                var option1 = document.createElement('option');
                    option1.text = 'SomeText4';
                options.push(option1);
                var option2 = document.createElement('option');
                    option2.text = 'SomeText5';
                options.push(option2);
                var option3 = document.createElement('option');
                    option3.text = 'SomeText6';
                options.push(option3);
                break;
        }

        //populate select menu
        for (var i = 0; i < options.length; i++) {
            //how can I do this part?
            item.appendChild((options[i]));
        }
    }

答案 1 :(得分:1)

var i = 1; 
var option1 = 'test';
var option2 = 'test2';
var number = eval("option"+parseInt(i+1, 10)); 
console.log(number);

这在起作用... https://jsfiddle.net/ucp9jgnh/1/ 应该可以解决问题...不是一个好方法,但是至少可以起作用

在此示例中,option2是答案...

parseInt(i + 1,10)...该部分将确保它是数学格式的i(循环)+1。然后将其添加到“选项”文本中,然后eval()允许JS将其视为变量而不是字符串。

如果您将var i = 0更改,由于数学原因,它将输出'test'而不是'test2'。

这是您要在循环中执行的操作...应该按原样工作:

var appendedThing = eval("option"+parseInt(i+1, 10));
item.appendChild(appendedThing);