真的很简单,但我开始使用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]-->';
}
}
答案 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小提琴为我做了上传,所以我没有注意到。