2011-04-19 4 views
0

는, 예를 들어, 성공적으로DOM에서 스택 요소를 어떻게 확장합니까?

Element.prototype.ancestorByTagName = function(tagName) { ... } 

Element의 연장하고 있지만, 구체적으로 확장하는 방법을 알아낼 수없는 Select 요소, 예를 들어

, 다음의 각 실패 :

Select.prototype.appendOption = function(value, label, select_value) { ... } 
Element.Select.prototype.appendOption = function(value, label, select_value) { ... } 

오전을 손실. 단지 SelectOption 아이를 가질 수 있기 때문에이 경우

는 모든 Element의 대 Select에 새로운 방법 appendOption을 제한하는 의미가 있습니다. Selectadd 방법은 꽤 절름발이입니다. 여기

+1

어떤 브라우저를 타겟팅하고 있습니까? 모든 브라우저가 동일한 상속 모델 또는 상속 모델을 구현할 것을 기대하는 것은 약간 야심적입니다. Kangax 's를 읽었습니까 * DOM 확장에있어 문제점은 무엇입니까? (http://perfectionkills.com/whats-wrong-with-extending-the-dom/)? – RobG

+0

흥미 롭습니다. http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-94282980 – mplungjan

+0

@RobG - 크롬 후에 그리고 어쩌면 파이어 폭스. 절대적으로 dom을 확장하는 위험에 동의합니다. 대부분의 경우 작업을 격리하기 위해 명명 구조를 사용합니다. 이 경우에는 지적인 운동을하는 것이 중요하다. 필자가 인식하는 것을 채우는 것은 매우 기본적인 기능이다. –

답변

3

확실하지 않음을

<script> 
if (HTMLSelectElement) HTMLSelectElement.prototype.addOption = function(text,value) { 
    this.options[this.options.length]= new Option(value,text) 
} 
else alert("It's not called HTMLSelectElement") 
window.onload=function() { 
    document.getElementById('sel1').addOption("Hi","There") 
} 
</script> 
<select id="sel1"></select> 

파이어 폭스 사에서 근무하고 IE8 날이 준 뭔가 네이티브 개체. 대신 HTMLSelectElement (MDC reference)을 원합니다.


: DOM을 확장 할 수 없습니다 이유에 대해, 의견에서 지적했듯이, this article을 읽고 있습니다.

+0

네 말이 맞아, 나는 이것에 대해 꽤 바보 같다. 예제에서 "HTMLElement"대신 "Element"를 사용하고 혼란 스러웠습니다. –

+0

DOM 확장에 대한 기사를 읽었습니다. 끝에는 모 놀리 식 환경에서 ok - chrome이고 나중에 firefox 일 수 있다고합니다.누군가 돈을 많이 내면 IE에 번역을 쓰기 위해 돈을 지불 할 것입니다. –

0

웹 페이지 오류 세부

당신이에서 Element.Select을 가지고 있지만, 그것은하지 어디
Message: 'HTMLSelectElement' is undefined 
Line: 2 
Char: 1 
Code: 0 
URI: file:///C:/TEMP/addoption.html 
관련 문제