-1

コード 1なしでコード 2 を書くと、コードは機能し、「aaaaa」と表示されます。

しかし、コード 1コード 2 を記述した場合、コードは機能しません。「vvvaa」と表示される代わりに、何も表示されません (「aaaaa」でも「vvvaa」でもない)。

うまくいかないのはなぜですか?(document.getElementByIdは に情報を送信しません<div>。)

コード 1:

document.getElementById('na').innerHTML = "vvvaa";

コード 2:

document.write("<div id='na'> aaaaa </div>");

完全なコード: (ページ上の唯一のもの)

<script>
    function timeago(time) {
        var new_date = new Date();
        var time_ago = Math.floor(new_date.getTime()/1000-time);
        var d = Math.floor(time_ago/24/60/60);
        var h = Math.floor((time_ago-d*24/60/60)/60/60);        
        var m = Math.floor((time_ago-d*24/60/60-h*60/60)/60);
        var s = Math.floor(time_ago-d*24/60/60-h*60/60-m*60);
        document.write(d+"d - "+h+"h - "+m+"m - "+s+"s");
        document.getElementById('na').innerHTML="vvvaa";
        // setTimeout( function(){ timeago(time); }, 2000 ); 
    }
    timeago('1376743609');
    document.write("<div id='na'> aaaaa </div>");
</script>
4

4 に答える 4

4

順序が重要です。'na'要素をドキュメントに含める前に、要素にアクセスすることはできません。

当然、最初に要素をドキュメントに追加する必要があります。それが完了したら、 のような関数でアクセスできますgetElementById()

これ...

document.write("<div id='na'></div>");
document.getElementById('na').innerHTML = "vvvaa";

... 動作します。

これを次のようにショートカットできます。

document.write("<div id='na'>vvvaa</div>");
于 2013-08-17T13:27:50.503 に答える
0

document.writebe after のみが渡されるため、のtimeago()上には存在しないため、 Try<div>を使用した後に "timerago" を呼び出すだけです。document.write

<script>
function timeago(time) {
    var new_date = new Date();
    var time_ago = Math.floor(new_date.getTime()/1000-time);
    var d = Math.floor(time_ago/24/60/60);
    var h = Math.floor((time_ago-d*24/60/60)/60/60);        
    var m = Math.floor((time_ago-d*24/60/60-h*60/60)/60);
    var s = Math.floor(time_ago-d*24/60/60-h*60/60-m*60);
    document.write(d+"d - "+h+"h - "+m+"m - "+s+"s");
    document.getElementById('na').innerHTML="vvvaa";
    // setTimeout( function(){ timeago(time); }, 2000 ); 
}
document.write("<div id='na'> aaaaa </div>");
timeago('1376743609');
</script>
于 2013-08-17T13:35:52.777 に答える