2011-01-06 4 views
3

DOM을 확장하려고합니다. 나는 DIV 요소에서 "서브 클래스"appendChild()를 통해 어떤 JS 객체를 추가 할 수 있습니까?

객체에 대한 요구 사항이 무엇인지 객체의 프로토 타입 인하지 않을 것입니다 DOM 객체는 DOM에 삽입 할 그렇다면
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 

?

+0

관련 항목 : http://stackoverflow.com/questions/779880/in-javascript-can-you-extend-the-dom – Hamish

답변

0

이것은 실제로 Firefox에서 작동합니다. 어쨌든. 새 Subclass를 수행 할 때 실제로는 새 요소를 만들지 않지만 동일한 하위 클래스를 계속 사용합니다.

어쨌든 나는 DOM 객체 자체가 appendChild 될 수있는 방식으로 "특별한"것이라고 말하고 싶습니다. W3C 사양 appendChild()에 따르면

+0

Firefox에서 작동하지 않습니다. 'var obj = new Subclass(); obj.innerHTML = "test"; document.body.appendChild (obj);'오류가 발생합니다. –

+0

이상하게도, 그것은 나를 위해 일했습니다. 실제로 div를 문서에 추가했습니다. –

0

:

  1. 반환 Node.
  2. 던져 DOMException.
  3. Node 유형의 인수가 필요합니다. specification에서

:

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

당신이 다음

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

에 의해 그것은 단지 DIV 요소를 확장하는 것을 할 수있을 수 있습니다 만 DIV 요소를 확장 할 경우 .. 작품 FF로 다른 브라우저에 대해 모른다.

희망이 도움이 될 수 있습니다.

관련 문제