0

我有一个简单的问题。我有一个这样的选择列表:

var myarray = ["one", "two", "three"];
var container = document.createElement("select");  
for (var i = 0; i < myarray.length; i++) {
    var element = document.createElement("option");
    var textlabel = document.createTextNode(myarray[i]);

    if (element.nodeValue == "two") { 
        element.selected = true;
    }

    element.appendChild(textlabel); 
    container.appendChild(element);
}
document.body.appendChild(container);

我有两个问题:

1)我很确定现在应该选择的元素是“二”……不是吗?

2) 由于option元素是在循环内动态创建的(没有三个不同的选项变量可供我使用,但只有一个会随着循环的进行而更新),我如何引用所选的一个以供将来使用?

例如,假设稍后我得到用户输入,并且根据该输入,我希望该列表作为选定项“三”。

感谢您的任何帮助!如果你想使用它,这里是小提琴......

4

3 回答 3

1

只需在循环中更改以下内容for即可解决选择问题:

if (myarray[i] == "two")
于 2012-12-21T16:44:28.583 回答
1

1)我很确定现在应该选择的元素是“二”……不是吗?

不,不是:你检查 element.nodeValue,而实际上你应该检查textLabel's one - 或者只是检查内容本身:

if (myarray[i] === 'two') {
  element.selected = true;
}

2) 由于选项元素是在循环中动态创建的(没有三个不同的选项变量可供我使用,但只有一个会随着循环的进行而更新),我如何引用所选的一个以供将来使用?

看,<select>elements 有两个有用options的属性:(其中包含所有选项,并且动态更新)和selectedIndex. 您可以将它们组合起来以获得选定的选项:

container.addEventListener('change', function() {
   console.log(this.options[this.selectedIndex]);
}, false);

但是,如果您想要知道所选元素的,那就更容易了 - 使用container.value.

例如,假设稍后我得到用户输入,并且根据该输入,我希望该列表作为选定项“三”。

如果您知道与此相对应的选项的位置,那就小菜一碟了:只需再次使用 selectedIndex 属性:

container.selectedIndex = 3;
于 2012-12-21T16:50:21.000 回答
0

尝试使用console.log(在带有 firebug 的 chrome 或 firefox 上)调试您的脚本:

试试这个

var myarray = ["one", "two", "three"];
var container = document.createElement("select");
container.id = "mySelect" ;  
    for (var i = 0; i < myarray.length; i++) {
        var element = document.createElement("option");
        var textlabel = document.createTextNode(myarray[i]);

        element.appendChild(textlabel);   

        if (element.value == "two") { 
            element.selected = true;

        }

        container.appendChild(element);
    }
        document.body.appendChild(container);

为了引用您选择的元素,您应该为您的选择元素提供一个 id 并访问它,如下所示:

el = document.getElementById('mySelect');
el.selectedIndex ; // give you the selected index
el.options[el.selectedIndex]; // give you the value
于 2012-12-21T16:48:24.050 回答