【发布时间】:2018-12-24 07:23:35
【问题描述】:
我有一个选择下拉菜单,我希望它在更改时运行一个函数并将选择的值传递给该函数。但是,该函数需要一个保存数组的变量,而传入的是一个字符串(选择的值)。
您可以在下面的代码中看到它工作(或不工作)。所选值应代表其对应的变量。
我怎样才能做到这一点?
var str = ["Paul", "John", "Melissa", "Mike"];
var int = [8, 4, 55, 7];
var mix = ["Paul", 9, "John", 5, "Melissa", 67, "Mike", 2];
var main = document.querySelector('#main');
var sel = document.querySelector('select');
function testFunc(arr){
arr.forEach((i) => {
var p = document.createElement('p');
p.innerHTML = i;
main.appendChild(p);
});
}
testFunc(mix);
sel.addEventListener('change', testFunc(sel.value));
<select>
<option value="str">String</option>
<option value="int">Integer</option>
<option value="mix">Mixed</option>
</select>
<div id="main"></div>
编辑:
我应该注意到,数据数组是动态输入的,我真的很想避免对它们进行操作,以免在以后的编辑中造成额外的代码和混乱。
【问题讨论】:
-
为什么要sting这个函数?有没有给你带来什么问题?
-
你的函数是否曾经传递过一个数组?如果没有,则重新编码。如果是这样,那为什么不对字符串使用不同的函数呢?
-
testFunc(sel.value) 到 function(){testFunc(this.value)} 和 arr = eval(arr) 应该给出预期的输出
标签: javascript arrays select