2010-11-25 6 views
0

일부 코메 시안 코드의 메소드로 사용되는 Javascript 클래스로 어려움을 겪고 있습니다.이 코드의 생성자는 어떻게 갖춰야합니까? 다음 코드는 유효하지 않습니다getElementById의 결과가 null입니까?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
    <head>  
     <link rel="Stylesheet" href="gStyle.css" />    
     <script type="text/javascript" language="javascript">  
      // Gantt chart object 
      function ganttChart(gContainerID) {  
       this.isDebugMode = true; 
       this.gContainer = document.getElementById(gContainerID);  
       if (this.isDebugMode) { 
        this.gContainer.innerHTML += "<div id=\"gDebug\">5,5 | 5.1</div>"; 
       }  
      }     
      var myChart = new ganttChart("chart1");     
     </script>    
    </head>  
</html>  
<body>  
    <div id="chart1" class="gContainer"></div>  
</body>  
</html> 

this.gContainer 페이지가 준비되기 전에 당신이 new ganttChart("chart1");를 호출 할 때 즉 chart1 아직 존재하지 않는, 스크립트를 실행하기 때문에 즉

+0

가능한 중복 (http://stackoverflow.com/questions/8739605/getelementbyid-returns-null) –

답변

2

null입니다. window.onload = function() { } 안에 코드를 감싸거나 페이지 맨 아래에서 실행하십시오.

+0

감사합니다, 생각 그것은 이런 식으로 될 것입니다! –

2

문제는 DOM 아직에 존재하거나 스크립트 onload를 실행하거나 그래서 <body> 당신의 id="chart1"의 끝에 배치하지 않는 요소에 대해 찾고, 스크립트가 너무 일찍 실행되고 있다는 것입니다 요소가 실행될 때 발견되어야합니다.

1

페이지가로드되기 전에 코드를 실행하면 코드가 실행될 때 chart1 id의 DOM 요소가 존재하지 않는 문제가 있습니다.

사용 그렇게 위해 window.onload 사용하면 이전에 언급 위해 window.onload 선언을 무시 것이다

window.onload = function(){myChart = new ganttChart("chart1");}; 
1

참고. 다음과 같은 라인을 따라 뭔가 더 나은 것 :

<script type="text/javascript"> 
var prevOnload = window.onload || function() {}; 
window.onload = function() { 
prevOnload(); 
// do your stuff here 
}; 
</script> 

또한, 전까지 알 이미지가 완전히로드 된 온로드는, 트리거 JQuery와에게 .ready 또는 유사한 & $ (문서)를 사용하여 고려하지 않을 것이다.

:

감사합니다, 페드로

[에서 getElementById는 null을 반환?]의
관련 문제