2013-03-22 83 views
0

有誰知道我是否可以在任何HTML元素上調用appendChild?我可以在任何HTML元素上調用appendChild嗎?

具體而言,我需要在input type ='text'上做它,它似乎工作?但這是正確的嗎?

下面我的代碼片段:

var txt = document.createElement('input'); 
txt.type = 'text'; 
... 
var div = document.createElement('div'); 
... 
txt.appendChild(div); 
+4

***爲什麼***你需要爲''元素做? – VisioN 2013-03-22 16:17:20

+0

您只能將元素附加到可以保存元素的元素,因此輸入字段不能用作父項 – GottZ 2013-03-22 16:18:06

+0

我需要將它添加到輸入中,因爲它作爲函數中的輸入傳遞給我。我不能稱爲家長,因爲它可能沒有。 – Zo72 2013-03-22 16:18:45

回答

1

the w3.org on input element

內容模型:空。

將元素放在input中是無效的。

如果你想設置的輸入值,使用value屬性:

input.value = 'someText'; 

如果你想要的是你輸入之前加一個元素,用insertBefore

input.parentNode.insertBefore(div, input); 

要在輸入後插入div,你應該做

input.parentNode.insertBefore(div, input.nextSibling); 
+0

謝謝你。你可能是對的,我會把這個標記爲正確答案。對於記錄input.parentNode假定輸入文本有一個父母,這可能不會在我想要在我的示例中添加div的時候......這正是我問這個問題的原因: – Zo72 2013-03-22 16:25:26

+0

如果您的輸入元素附加到dom,它有一個父母。如果你想添加一個後繼者,無論如何你需要父母。 – 2013-03-22 16:27:24

+0

我的輸入元素可能不會被添加到dom中 – Zo72 2013-03-22 16:30:19

2

有誰知道我是否可以在任何HTML元素上調用appendChild?

你可以。它是元素節點的標準功能。它可能並不總是有道理的。

具體而言,我需要對輸入類型='文本',它似乎工作?但這是正確的嗎?

<input>元素被定義爲空。他們仍然有標準的DOM方法,但不允許有子節點。你試圖把DOM置於無效狀態,並且(據我所知),當你做的事情未定義時,會發生什麼。你不應該這樣做。

0

不,你不能將一個孩子追加到輸入元素。它是一個獨立的元素。但是,您可以將一個輸入元素附加到div元素。

0

不,你不能將一個孩子追加到輸入,這是因爲標準規定這個元素的內容模型爲Empty。

它只具有可以通過「。」訪問的屬性。語法如

input.propertie 
相關問題