麻烦一个简单的GetElementById事情真的很简单

时间:2012-09-26 19:05:34

标签: javascript

真的很简单,但我开始使用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”)为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 个答案:

答案 0 :(得分:3)

是的,这是唯一的原因,因为你似乎是javascript的新手,我想这对你更有意义

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

您看到脚本运行时您的页面未加载。所以你必须使用window.onload。

如果您的代码位于file.js:

,您也可以使用它
<script defer src="file.js"> </script>

这确保您的代码不会运行,除非解析文档。

答案 1 :(得分:1)

您可能在DOM加载完成之前尝试运行javascript。试试这个:

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

这假设你已经包含了jQuery。

正如@Thristhart所说,你也可以使用window.onload。这是一个内置的javascript事件,它发生在$(document).ready()之后,所以你也应该对此安全。

答案 2 :(得分:0)

如果使用JQuery:

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

或者

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

答案 3 :(得分:0)

你不必加载jQuery,如果你不想看起来像javascript的链接。当我把它分开时它工作得很好。

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

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

ele.innerHTML = 'content to be added';

查看其他帖子,这是一个onload问题。 JS小提琴为我做了上传,所以我没有注意到。