答案 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);