1

私はこのコードコードを持っています。

jsfiddleで動作しますが、ファイルでテストすると動作しません。

htmlによって作成された最初の3行のみを表示しました:

テストh1

テストh2

テストp

(私はさまざまなブラウザーでコードをテストし、javascriptは機能しますが、同じ問題です)。

コード:

    var div2= document.createElement('div');  
    div2.className = "div2" ;
    var h1 = document.createElement('h1');
    h1.innerHTML= "test h1" ;
    var h2 = document.createElement('h2');
    h2.innerHTML= "test h2" ;
    var p = document.createElement('P');
    p.innerHTML= "p2" ;            
    div2.appendChild(h1);
    div2.appendChild(h2);
    div2.appendChild(p);
   document.getElementById('div1').appendChild(div2);

ありがとうございました。</ p>

4

2 に答える 2

3

独自のアプリケーションでこのコードを実行する前に、ドキュメントがロードされるのを待っていない可能性があります。このブロックでコードをラップしてみてください。

window.onload = function() {
    [your code here]
}
于 2012-11-05T17:09:43.223 に答える
1

この問題は、スクリプトを実行しているときに関係している可能性があります。jsFiddleで、プロジェクトのデフォルトで保存しました(つまり、onLoadイベント中にコードが呼び出され、MooToolsライブラリが含まれています)。

プロジェクトをラップなし(ヘッド)とライブラリなし(純粋なJS)に切り替えると、コードが機能しなくなります。

その理由は、DOMが完全にメモリにロードされる前に、DOMを使用して作業を行おうとしているためです。ページの下部でスクリプトを実行するか(ドロップダウンをラップなし(本体)に変更することでjsFiddleでシミュレートできます)、ブラウザーでonLoadイベントが発生した後に実行する必要があります。

window.onload = function(){
        var div2= document.createElement('div');  
        div2.className = "div2" ;
        var h1 = document.createElement('h1');
        h1.innerHTML= "test h1" ;
        var h2 = document.createElement('h2');
        h2.innerHTML= "test h2" ;
        var p = document.createElement('P');
        p.innerHTML= "p2" ;            
        div2.appendChild(h1);
        div2.appendChild(h2);
        div2.appendChild(p);
       document.getElementById('div1').appendChild(div2);
};

これにより、onLoadイベントが発生したとき、DOMにアクセスする準備ができたときに実行されます。

このフィドルを参照してください:http://jsfiddle.net/mori57/jzBpK/

于 2012-11-05T17:13:16.973 に答える