如何使用javascript分配组合框值

时间:2012-12-12 15:15:28

标签: javascript arrays combobox

想象一下,你有一个这样的数组:

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[]值之一分配给组合框?可能吗? 干杯

3 个答案:

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

以下是演示:http://jsfiddle.net/YJj3b/1

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

时更快