想象一下,你有一个这样的数组:
myArray[0] = 1,2,3
myArray[1] = 2,3,5
myArray[2] = 1,4,5
其中(1,2,3),(2,3,5),(1,4,5)是组合框的值。
例如。当myArray [0]:
<select name="somename" id="someid">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
例如。当myArray [1]:
<select name="somename" id="someid">
<option value="2">two</option>
<option value="3">three</option>
<option value="5">five</option>
</select>
现在,重点是将这个myArray[]
值之一分配给组合框?可能吗?
干杯
答案 0 :(得分:2)
当然。您可以循环数组中的元素,然后从中构建您的html。
var html = '';
for(var i = 0; i < myArray[0].length; i++){
html += '<option value="' + myArray[0][i] + '">' + myArray[0][i] + '</option>';
}
document.getElementById('someid').innerHTML = html;
注意:这是一个非常简单的示例,用于演示逻辑。如果你真的需要这个功能,你当然还需要一种方法将你的数字转换为文本值(即将1转换为“1”)。
如果这不是您想要的,那么请尝试更好地解释您的问题。目前尚不清楚是否要使用myArray
的特定索引来创建一个选择。或者,如果要使用相应的数组值填充多个选择列表(已存在)。如果是后者,那么你应该更清楚“someid”究竟是什么,这样我们才能正确识别每个选择列表。
答案 1 :(得分:1)
您可以迭代数组并创建适当的DOM元素。下面是一个示例,您需要为单词添加数值的查找数组:
numwords = ["one", "two", "three", "four", "five"];
myArray = [];
myArray[0] = [1,2,3];
myArray[1] = [2,3,5];
myArray[2] = [1,4,5];
for(var i = 0; i < myArray.length; i++){
var select = document.createElement('select');
for(var j = 0; j < myArray[i].length; j++){
var option = document.createElement('option');
option.value = myArray[i][j];
option.innerHTML = numwords[myArray[i][j] - 1];
select.appendChild(option);
}
document.body.appendChild(select);
}
答案 2 :(得分:1)
没有jQuery,假设您已经拥有“选择”对象:
var s = document.getElementById('someid');
var words = ["one", "two", "three", "four", "five"];
for(var i = 0; i < myArray[0].length; i++){
var t = document.createElement("option")
t.value = myArray[0][i];
t.textContent = words[myArray[0][i]-1];
s.appendChild(t)
}
(的 Working Example 强>)
否则,请添加:
var s = document.createElement("select");
s.id = 'someid';
s.name = 'somename';
var words = ["one", "two", "three", "four", "five"];
for(var i = 0; i < myArray[0].length; i++){
var t = document.createElement("option")
t.value = myArray[0][i];
t.textContent = words[myArray[0][i]-1];
s.appendChild(t)
}
document.body.appendChild(s);
我更喜欢手动DOM操作(.textContent
)而不是innerHTML
,因为innerHTML
强制浏览器在每次使用时重新解析整个DOM,因为浏览器可以'可能预测添加的HTML的结构。这使得DOM操作渲染速度比使用innerHTML