0

いくつかのコメディアン コードのメソッドとして使用されている Javascript クラスに苦労しているだけですが、このコードのコンストラクタをどのように作成すればよいでしょうか? 次のコードは無効です:

<!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 が null です

4

4 に答える 4

2

これは、ページの準備が整う前にスクリプトを実行しているためです。つまりchart1、を呼び出したときにまだ存在していませんnew ganttChart("chart1");。コードを内部にラップするwindow.onload = function() { }か、ページの下部で実行します。

于 2010-11-25T12:29:26.983 に答える
2

問題は、スクリプトの実行が早すぎることです。DOMにまだ存在しない要素を探しています。スクリプトを実行するか、スクリプトonloadを最後に配置して、実行時に要素が見つかるようにします<body>id="chart1"

于 2010-11-25T12:30:14.370 に答える
1

問題は、ページがまだ読み込まれる前にコードを実行するため、コードが実行された時点でidchart1のDOM要素が存在しないことです。

使用する

window.onload = function(){myChart = new ganttChart("chart1");};
于 2010-11-25T12:30:22.990 に答える
1

そのように window.onload を使用すると、前述のすべての window.onload 宣言が上書きされることに注意してください。次の行に沿ったものが良いでしょう:

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

また、すべての画像が完全に読み込まれるまで onload はトリガーされません。jquery & $(document).ready などの使用を検討してください。

:)

よろしく、ペドロ

于 2010-11-25T12:39:23.393 に答える