我可以在任何HTML元素上调用appendChild吗?

时间:2013-03-22 16:16:32

标签: javascript html

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

具体来说,我需要在输入类型='文字'上这样做,它似乎工作?但这是对的吗?

在我的代码片段下面:

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

4 个答案:

答案 0 :(得分:2)

  

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

你可以。它是元素节点的标准功能。但它可能并不总是有意义。

  

具体来说,我需要在输入类型='文字'上这样做,它似乎工作?但这是对的吗?

<input>个元素被定义为空。它们仍然具有标准DOM方法,但不允许它们具有子节点。您正试图将DOM置于无效状态,并且(据我所知)当您执行操作时所发生的行为未定义。你不应该这样做。

答案 1 :(得分: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);

答案 2 :(得分:0)

否则您无法将子项附加到输入元素。这是一个独立的元素。但是,您可以将输入元素附加到div元素。

答案 3 :(得分:0)

不,您不能将子项附加到输入,这是因为标准声明此元素的内容模型为空。

它只有“。”可以访问的属性。语法如

input.propertie