有人知道我是否可以在任何HTML元素上调用appendChild?
具体来说,我需要在输入类型='文字'上这样做,它似乎工作?但这是对的吗?
在我的代码片段下面:
var txt = document.createElement('input');
txt.type = 'text';
...
var div = document.createElement('div');
...
txt.appendChild(div);
答案 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