2012-01-04 38 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

相關問題