2014-02-11 5 views
1

저는 자바 스크립트에서 새로운 기능을 제공합니다. 여기에 내 이상한 문제가있다.
내 편집기 Phpstorm에 일부 코드를 작성하고 내 효과를 비 교적으로보고 싶지만 firebug에 코드를 넣을 때 !!!자바 스크립트가 내 편집기에서 작동하지 않습니다.

var views = document.getElementById("views-row"); 
console.log("This is element type of :" , views.nodeType); 
console.log("This is element type of :" , views.innerHTML); 
console.log("This is element type of :" , views.childNodes); 

var myLinks = document.getElementsByTagName("a"); 
console.log("Links", myLinks.length); 

var views = document.getElementById("views-row"); 

views.setAttribute("align","right"); 

내가 놓친 거지 뭔가 :

여기에 내 작은 코드입니까?

답변

2

아마 HTML 페이지가 렌더링되기 전에 자바 스크립트를 렌더링하고 있기 때문일 수 있습니다. 귀하의 HTML 태그는 DOM에 의해 알려져 있지 않습니다. ondomready 함수를 사용하거나 닫는 </body> 태그 앞에 javascript를두면 작동합니다.

DOM 준비 예에
<html> 
<head> 
</head> 
<body> 
    <!-- your HTML here --> 

<script> 
(function() { 
    // Dom is ready execute your javascript functions here! 

})(); 
</script> 
</body> 
</html> 

(인식,이 모든 브라우저에서 작동하지 않습니다) :

document.onreadystatechange = function() { 
    var state = document.readyState 
    if (state == 'complete') { 
     // Dom is ready 
    } 
}​ 

당신이 정말로 당신의 <head> 태그 내부에 자바 스크립트를로드하려면. jQuery를 살펴보고 나서 크로스 브라우저 domready 이벤트를 사용할 수 있습니다.

$(document).ready(function() { 

}); 
+0

Thx. 그것은 하나의 질문입니다 : 자바 스크립트 코드를 헤더의 맨 위에 또는 본문에 넣는 것이 왜 그렇게 중요한가? 헤더에 스크립트 코드를 넣을 때 작동하지 않으며 본문에 넣으면 제대로 작동합니다. 왜 ? – ngWeb

+1

내가 말했듯이, 귀하의 HTML은 아직 렌더링되지 않습니다. getElementById ("view-rows")를 실행 중이지만이 요소는 아직 존재하지 않습니다. 따라서 HTML이 렌더링 된 후에로드하면 존재합니다. 나는 이것이 의미가 있기를 바랍니다 :) – Dieterg

+0

네, 많은 도움이됩니다. thx 백만 – ngWeb

1

콘텐츠를로드해야합니다. 이 코드를 머리에 쓰면 DOM 요소가로드되기 전에 실행됩니다. 당신은 내용이로드되는 경우에 이벤트 핸들러를 첨부 할 수 있습니다

document.addEventListener("load", function(){ 
    //your code here 
}, false); 

을이 경우가 더 정확 머리에 코드를 남길 수 있습니다.

+1

더 정확한 이유는 무엇입니까? 닫는 태그 전에로드하는 것이 좋습니다. [developer.yahoo.com] (http://developer.yahoo.com/performance/rules.html#js_bottom) – Dieterg

+0

방금 ​​읽었습니다. 감사합니다! 나는 항상 머리를 쓰는 법을 배웠다. – Martin

관련 문제