我有这样的代码:
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()返回。
答案 0 :(得分:1)
var a = selectBox.options[selectBox.selectedIndex];
肯定会在所有浏览器中提供Option
个对象(或HTMLOptionElement
),IE 7,6,5,4和可能包含3个(尽管IE可能不会给你正如您所观察到的,当您致电toString()
时,这是一个特别有用的价值。这将包含反映选项文本和值的text
和value
属性。如果这不适合您,则代码中的其他地方会出现问题。
至于在选择框之间传输选项,我对此不太确定,但如果有疑问,您可以创建一个新的Option
并将其添加到新的选择框中:
var newOption = new Option(a.text, a.value);
答案 1 :(得分:0)
var a = selectBox.options[selectBox.selectedIndex].value;
会帮助您
(警报只能打印字符串和数字,但不能打印任何对象。您可以在Firebug中使用“console.log(a)”,在开发人员工具栏中使用IE8 +