IE6& IE7如何从选择框中获取所选的选项对象

时间:2011-10-13 13:00:38

标签: javascript internet-explorer option

我有这样的代码:

var a = selectBox.options[selectBox.selectedIndex];

如果我执行:

alert(a);

使用FF,Chrome,Opera等...我得到:

  

[object HTMLOptionElement]

这正是我想要的。 如果我使用IE6或IE7,我会得到:

  

[对象]

根本没有预期的选项属性。
这意味着没有TextNode作为childNode而没有value属性。我该如何解决这个问题? 此外,如果我尝试使用该节点添加到另一个选择框,IE会抛出异常:

SCRIPT87: Invalid argument.

我被要求制作一个与IE6兼容的程序,但我找不到让它工作的方法。我需要移动Option对象,IE7不允许我。

按要求编辑:
上下文HTML

                <select id="identification">
                    <option value="1">1</option>
                    <option value="2">2</option>
                    <option value="3">3</option>
                </select>

                    <select id="toBeFilled" multiple>
                </select>

重要说明:
我正在做什么从不知道文档的名称和ID列表。它只知道它将用于在文档中工作的节点 例如,当我说Node我的意思是什么document.getElementById()返回。

2 个答案:

答案 0 :(得分:1)

var a = selectBox.options[selectBox.selectedIndex];肯定会在所有浏览器中提供Option个对象(或HTMLOptionElement),IE 7,6,5,4和可能包含3个(尽管IE可能不会给你正如您所观察到的,当您致电toString()时,这是一个特别有用的价值。这将包含反映选项文本和值的textvalue属性。如果这不适合您,则代码中的其他地方会出现问题。

至于在选择框之间传输选项,我对此不太确定,但如果有疑问,您可以创建一个新的Option并将其添加到新的选择框中:

var newOption = new Option(a.text, a.value);

答案 1 :(得分:0)

var a = selectBox.options[selectBox.selectedIndex].value;会帮助您

(警报只能打印字符串和数字,但不能打印任何对象。您可以在Firebug中使用“console.log(a)”,在开发人员工具栏中使用IE8 +