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

发布于 2024-10-10 17:48:41 字数 377 浏览 7 评论 0原文

我正在尝试扩展 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 中的要求是什么?

I am trying to extend the DOM. I "subclassed" from the Div element:

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

So if an object's prototype being a DOM object won't do, what is the requirement for an object to be inserted into the DOM?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我喜欢麦丽素 2024-10-17 17:48:41

这实际上在 Firefox 中是有效的……无论如何。在执行 new Subclass 时,它实际上不会创建新元素,而是继续使用相同的元素。

无论如何,我想说 DOM 对象本身是“特殊的”,因为只有它们才能被追加子代。

This actually works in Firefox.. Sort of, anyway. It won't actually create new elements when doing new Subclass, but keeps using the same.

In any case, I would say the DOM objects themselves are "special" in the way that only they can be appendChild'd.

一腔孤↑勇 2024-10-17 17:48:41

根据 W3C 规范 appendChild()

  1. 返回 Node
  2. 抛出DOMException
  3. 需要一个 Node 类型的参数。

来自规范

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

According to W3C specification appendChild():

  1. Returns Node.
  2. Throws DOMException.
  3. Requires one argument of type Node.

From specification:

Node appendChild(in Node newChild) raises(DOMException);
小姐丶请自重 2024-10-17 17:48:41

如果您只想扩展 div 元素,那么您可以这样做,届时

HTMLDivElement.prototype.newFunction = function () { //'this' will get that div dom }

它将仅扩展 div 元素..适用于 FF,不知道其他浏览器。

希望这可以帮助你。

if you want to extend only div elements then may be you can do that by

HTMLDivElement.prototype.newFunction = function () { //'this' will get that div dom }

then it will extend only the div elements.. works on FF, don't know about other browsers.

hope this may help you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文