2012-04-28 1 views
4

내가 수동으로 HTML 파일에서 그 다음 줄을 작성하는 경우 :줄 바꿈 후에 textNode 생성을 피 하시겠습니까?

<div> 
<input type="button" value="Button 1"> 
<input type="button" value="Button 2"> 
</div> 

텍스트 노드는 각각의 새로운 라인이 생성됩니다.

addEventListener 메서드의 useCapture 인수를 이해하고 싶습니다. div 요소의 childNodes 속성을 사용하여 DOM 요소에 액세스하도록 선택했으나 요소 간 textNodes를 무시해야합니다. 이건 정말 실용적되지 않습니다 : 당신이 내 2 개 입력 태그를 선택하기 위해 childNodes[0]childNodes[2]을 무시하는 것으로 확인 여기

document.getElementsByTagName("div")[0].addEventListener("click", function(){alert(1);}, true); 

document.getElementsByTagName("div")[0].childNodes[1].addEventListener("click", function(){alert(2);}, false); 

document.getElementsByTagName("div")[0].childNodes[3].addEventListener("click", function(){alert(3);}, false); 

.

자바 코드 createElement을 사용하지 않고 한 줄에 모든 HTML 코드를 작성하지 않고 textNodes 생성을 무시할 수 있습니까?

개행 할 때 textNodes를 만들지 않고도 HTML 코드를 작성할 수 있습니까?

+0

'javascript'에서'{} '없이'if' 안에 두 줄의 코드를 작성할 수 있습니까? 아니요, 이것이 언어가 설계되고 작동되는 방식입니다. 같은 것이 여기에있다. – gdoron

+0

@godon less logical – baptx

+0

@baptxx. 의미? – gdoron

답변

1

먼저 은 자신을 반복하지 않습니다.! 동일한 DOM 쿼리를 반복해서 반복합니다.

이 시도 :

var div = document.getElementsByTagName("div")[0]; 
div.addEventListener("click", function(){alert(1);}, true); 

var buttons = div.getElementsByTagName("button"); 
buttons[0].addEventListener("click", function(){alert(2);}, false); 
buttons[1].addEventListener("click", function(){alert(2);}, false); 

이 하찮게 텍스트 노드를 건너 뜁니다 버튼을 얻을 getElementsByTagName를 호출 - 문제가 해결!

+0

좋습니다. 3 행의 예제지만 변수를 넣는 것이 더 나을 것입니다. 다른 버튼이 있었기 때문에 버튼에 직접 액세스하고 싶지 않았고 childNodes를 사용하면 div의 버튼에 액세스 할 수 있습니다. – baptx

+0

@baptx'childNodes'는 발견 한 이유 때문에 분명히 _not_ nice입니다. 만약 당신이 요소들에 대해서만 관심이 있다면, DOM을 사용하면 그 요소들을 줄 수 있습니다! _ – Alnitak

+0

네가 맞아,이 텍스트 노드 때문에 좋을지도 모르지 .Nodes :/ – baptx

1

개행 할 때 textNodes를 만들지 않고도 HTML 코드를 작성할 수 있습니까?

아니요. 당신은 내가 솔루션이 필요하시면 아니라고 추측 클라이언트로 보내기 전에 HTML 파일을 구문 분석하지 않는 한

...

1

죄송합니다. PHP, RUBY 같은 프로그래밍 언어를 사용하여 HTML 코드를 생성하고 이와 같은 것을 추가 할 수있는 가능성은 있습니다.

<input type="button" value="Button 1"><%- 
%><input type="button" value="Button 2"> 

하지만 내 대답은 듣고 싶지 않습니다.

+0

이 링크를 따라 PHP로 일부 줄의 구문 분석을 시도했습니다 : http://docs.php.net/manual/en/domdocument.loadhtml.php textNodes 모든 코드를 한 행의 코드 행으로 직렬화하여 <%- %>을 사용하여 제거됩니다. 페이지 요청 후 textNodes를 사용하지 않고도 페이지 소스에서 직접 사람이 읽을 수있는 출력을 얻을 수 없다고 생각합니다 (Firebug 또는 DOM inspector 제외). – baptx

+0

내 예제는 스키마 file.html.erb에있는 Ruby on Rails를위한 것입니다. – Eraden