2

本当に単純ですが、私はjavascriptから始めているので、すぐに解決する必要があります

私はこのhtmlを持っています:

<body>
<div id="content">
        <div id="logo">
            <noscript>
            <img src="fin_palais.png"/>
            </noscript>
        </div>
</div>
</body>

そして、javascriptで「logo」のIDを持つdivを選択し<noscript>て、適切なファイルで上書きしたい(SVGをサポートできるかどうかを確認するための簡単なブラウザテスト)このinnerHTMLは次のようになります:

document.getElementById('logo').innerHTML='<content to be added>';

Firebug から次のエラーが送られてきました: TypeError: document.getElementById("log") is null but its right there! ありがとう

ここに完全な HTML があります。

<html>
<head>
    <META CHARSET="UTF-8">
    <title>Bienvenu au Fin Palais</title>
    <script type="text/javascript" src="svg_support.js"></script>
    <script type="text/javascript">getSvgSupport("fin_palais")</script>
</head>
<body>
<div id="content">
        <div id="logo">

            <noscript>
            <img src="fin_palais.png"/>
            </noscript>
        </div>
</div>
</body>
</html>

これが私が作成した完全な svg_support.js です。

function getSvgSupport(file)
            {

                var ua = navigator.userAgent;
        if( ua.indexOf("Android") >= 0 )
            {
          var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8)); 
          if (androidversion <= 2.3)
                {
                document.getElementById('logo').innerHTML='<img src="',file,'.png"/>';

                }


            } else {
                document.getElementById('logo').innerHTML='<!--[if lt IE 9]><img src="',file,'.png"/><![endif]--><!--[if gte IE 9]><!--><embed src="',file,'.svg" type="image/svg+xml" /><!--<![endif]-->';
            }
        }
4

4 に答える 4

3

はい、それが唯一の理由です。あなたは JavaScript を初めて使用するように見えるので、これはあなたにとってより理にかなっていると思います

window.onload=function(){
document.getElementById('logo').innerHTML='<content to be added>';
}

スクリプトを実行すると、ページが読み込まれていないことがわかります。したがって、window.onload を使用する必要があります。

または、コードが file.js にある場合は、これも使用できます。

<script defer src="file.js"> </script>

これにより、ドキュメントが解析されない限りコードが実行されなくなります。

于 2012-09-26T19:12:27.907 に答える
1

DOM の読み込みが完了する前に JavaScript を実行しようとしている可能性があります。これを試して:

$(document).ready(function(){document.getElementById('logo').innerHTML='<content to be added>';});

これは、jQuery が含まれていることを前提としています。

@Thristart が言ったように、 も使用できますwindow.onload。これは組み込みの javascript イベントであり、AFTER$(document).ready()が発生するため、これについても安全に行う必要があります。

于 2012-09-26T19:07:39.907 に答える
0

JQuery を使用する場合:

$(document).ready(function(){
    $('div#logo').html('<content to be added>');
});

または

$(function(){
    $('div#logo').html('<content to be added>');
});
于 2012-09-26T19:10:42.103 に答える
0

したくない場合は、jQuery をロードする必要はありません。javascript の連鎖に何か問題があるようです。分解したらうまくいきました。

フィドル: http://jsfiddle.net/DamianHall/GxghG/

var ele = document.getElementById('logo');

ele.innerHTML = 'content to be added';

他の投稿を見ると、それはオンロードの問題です。JS フィドルがオンロードを行ったので、気づきませんでした。</p>

于 2012-09-26T19:13:24.037 に答える