2011-01-06 16 views
3

我想擴展DOM。從DIV元素I「子類」:什麼JS對象可以通過appendChild()添加?

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?

+0

相關:http://stackoverflow.com/questions/779880/in-javascript-can-you-extend-the-dom – Hamish 2011-01-06 04:07:13

回答

0

這實際上在Firefox中起作用。無論如何。它在創建新的Subclass時不會實際創建新的元素,而是繼續使用相同的元素。

無論如何,我會說DOM對象本身是「特殊的」,只有它們可以被appendChild加載。

+0

它不適用於Firefox。 `var obj = new Subclass(); obj.innerHTML =「test」; document.body.appendChild(obj);`給出錯誤。 – 2011-01-06 18:18:43

0

根據W3C規範appendChild()

  1. 返回Node
  2. 拋出DOMException
  3. 需要一個類型爲Node的參數。

specification

Node appendChild(in Node newChild) raises(DOMException); 
0
如果你想然後擴展只div元素可能是你可以做到這一點

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

那麼它將只擴展的div元素

..作品在FF上,不瞭解其他瀏覽器。

希望這可以幫助你。

相關問題