2

真的很简单,但我从 javascript 开始,所以应该很快解决

我有这个html:

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

我想用javascript选择id为“logo”的div,然后<noscript>用适当的文件覆盖(一个简单的浏览器测试,看看你是否可以支持SVG)这个innerHTML看起来像这样:

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

Firebug 向我发送此错误:TypeError: document.getElementById("logo") is null 但它就在那里!谢谢

好的,这是完整的 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。

正如@Thristhart 所说,您也可以使用window.onload. 这是一个内置的 javascript 事件,发生在之后$(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,您不必加载 jQuery,这似乎与 javascript 的链接有关。当我把它拆开时,它工作得很好。

小提琴:http: //jsfiddle.net/DamianHall/GxghG/

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

ele.innerHTML = 'content to be added';

查看其他帖子,这是一个加载问题。JS fiddle 为我做了 onload,所以我没有注意到。​</p>

于 2012-09-26T19:13:24.037 回答