2012-01-04 64 views
0

我得到了运行时JS错误:“意外调用方法或属性”。 下面是代码:JavaScript运行时错误:appendChild() - 意外的调用IE8中的方法或属性

var comboInput = document.getElementById("Combo"); 
    var option1 = document.createElement("option"); 
    option1.value = "-1"; 
    option1.innerHTML = "--Select--"; 
    comboInput.appendChild(option1); //At this line debugger breaks and 
            // throws the above error 

我经历了一些关于这个问题上如此相似的问题,但仍然没有得到解决了。

请帮助.. 谢谢进阶...

+0

试图看看'comboInput'有什么。或将ü请粘贴相关代码 – diEcho 2012-01-04 06:01:00

+0

comboInput的值是: 'ObjectHTMLinputElement' – Ved 2012-01-04 06:14:39

+0

输入元素总是自我封闭,不能有孩子,据我所知。这听起来像你实际上希望'#Combo'是一个[select](https://developer.mozilla.org/en/HTML/Element/select)元素。 – sethobrien 2012-01-04 06:46:30

回答

1

您不能将子女追加到<input>元素。

<option>元素只能是<select>元素,其中<select>元素是HTML的下拉列表(或依据这些属性,你给它一个多选列表)的版本的儿童。

试着改变你的HTML,这样你的“二合一”的元素是这样的:

<select id="Combo"></select> 

,然后你的代码应该工作。

注意,虽然你可以在HTML标记直接设置选项,例如,

<select id="Combo"> 
    <option value="-1">--Select--</option> 
    <option value="1">Green</option> 
    <option value="2">Purple</option> 
</select> 

(在你的HTML和有看跌期权,你可以通过JS添加额外的选项和/或删除选项。)

+0

感谢您的回答...我会尝试更改上面指定的代码.. – Ved 2012-01-04 07:00:55

+0

似乎是对的,但它在FF/Chrome中完美工作。 不过谢谢你纠正... – Ved 2012-01-04 12:53:41

1

您需要检查的comboInput值(输出其价值与console.log()或在alert(),看看它的设置)。

它可能具有值null,因为您的代码没有找到id="Combo"的现有对象。这可能是因为:

  1. 这样的对象并不在你的页面
  2. 存在你没有拿到ID完全正确
  3. 你正在运行的页面之前这段代码加载这样的对象尚未加载/创建。

如果您包含整个页面上下文(所有HTML和所有JS或到实际页面的链接),我们可以更具体地告诉您应采取哪些步骤来纠正问题。

+0

我检查了页面.Combo存在于其中。见下面的代码: '<输入的ID =“二合一”类型=“隐藏” />' – Ved 2012-01-04 06:11:34

+0

运算所述IE8错误,我认为'console.log'将在IE产生错误。不是吗? – diEcho 2012-01-04 06:18:03

+0

我没有使用的console.log而是直接提醒ELEM价值 – Ved 2012-01-04 06:29:43

相关问题