appendChild()可以添加哪些JS对象?

3
我正在尝试扩展DOM。我从Div元素中“派生”出子类:
var Subclass = function() {}
Subclass.prototype = document.createElement('div');
Subclass.constructor = Subclass;

var obj = new Subclass();
var obj.innerHTML = 'test';
document.body.appendChild(obj); // Exception: Node cannot be inserted ... point in the hierarchy

如果一个对象的原型是DOM对象行不通,那么将一个对象插入到DOM中的要求是什么?


在JavaScript中,你可以扩展DOM吗? - Hamish
3个回答

0
如果您想仅扩展div元素,那么可以通过以下方式实现:
HTMLDivElement.prototype.newFunction = function () { //'this' will get that div dom }

然后它只会扩展div元素.. 在FF上工作,不知道其他浏览器。

希望这可以帮助你。


0
根据W3C规范中的appendChild()
  1. 返回Node
  2. 抛出DOMException
  3. 需要一个类型为Node的参数。

来自specification

Node appendChild(in Node newChild) raises(DOMException);

0

这在 Firefox 中实际上是有效的... 在某种程度上,它不会在创建新的子类时实际上创建新元素,而是继续使用相同的元素。

无论如何,我认为 DOM 对象本身在只有它们可以被 appendChild 的方式中是“特殊”的。


它在Firefox中不起作用。var obj = new Subclass(); obj.innerHTML = "test"; document.body.appendChild(obj);会出现错误。 - Oliver Zheng
奇怪,这在我的电脑上可以工作。它确实把 div 添加到了文档中。 - Jani Hartikainen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接