0

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

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

4

3 回答 3

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 转换为“一”)。

如果这不是您想要的,请尝试更好地解释您的问题。不清楚是否要使用特定索引myArray来创建一个选择。或者,如果您想使用相应的数组值填充多个选择列表(已经存在)。如果是后者,那么您应该更清楚“someid”到底是什么,以便我们可以正确识别每个选择列表。

于 2012-12-12T15:20:09.363 回答
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

于 2012-12-12T15:20:21.713 回答
1

没有 jQuery,假设您已经有了“Select”对象:

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)
}

工作示例

否则,添加:

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

于 2012-12-12T15:23:49.890 回答