0

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

具体来说,我需要在 input type='text' 上执行它,它似乎有效?但这是正确的吗?

下面是我的代码片段:

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

4 回答 4

2

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

你可以。它是元素节点的标准特征。不过,这可能并不总是有意义的。

具体来说,我需要在 input type='text' 上执行它,它似乎有效?但这是正确的吗?

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

于 2013-03-22T16:21:17.437 回答
1

来自w3.org 上的输入元素

内容模型:空。

将元素放入input.

如果要设置输入的值,请使用value属性:

input.value = 'someText';

如果您想要在输入之前添加一个元素,请使用insertBefore

input.parentNode.insertBefore(div, input);

要在输入后插入 div,您可以这样做

input.parentNode.insertBefore(div, input.nextSibling);
于 2013-03-22T16:18:39.623 回答
0

不,您不能将子元素附加到输入元素。它是一个独立的元素。但是,您可以将输入元素附加到 div 元素。

于 2013-03-22T16:21:20.687 回答
0

不,您不能将子元素附加到输入,这是因为标准规定该元素的内容模型为空。

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

input.propertie
于 2013-03-22T16:31:21.210 回答