我希望有人包含我的JS文件,它做了一些整洁的事情。我认为我就像谷歌一样把它放了:你在源代码中加了一个脚本标签,google js会处理所有事情。 在我的php文件中是这样的:
echo '<script type="text/javascript"
src="http://www.site.com/gadget.js">
</script>';
我是gadget.js,我写了一个范围:
document.write('<span id="GadgetPicture>');
document.write('</span>');
window.setTimeout('refreshImage();', 2000);
在refreshImage函数中,我想引用我的span:
document.getElementById("GadgetPicture");
但是它让我无效...... 有人知道为什么吗?
另外,document.getElementById("body")
也给出了null。
米歇尔
答案 0 :(得分:6)
你错过了一句话:
document.write('<span id="GadgetPicture">')
使用DOM方法(createElement,appendChild)通常比使用document.write更好,但它仍然有效。
答案 1 :(得分:1)
对于你所遗漏的<span>
中的引用,就像每个人都说的那样,你不应该使用document.write在页面上创建新的元素,因为Greg说使用createElement和appendElement之类的;
var span = document.createElement('span');
span.id = 'GadgetPicture';
document.appendChild(span);
您还可以使用jQuery和HTML帮助器http://docs.jquery.com/Attributes/html#val
同样在你的setTimeout
方法中,你应该像使用它一样;
setTimeout(function() { refreshImage(); }, 2000);
或
setTimeout(refreshImage, 2000);
声明字符串将导致Javascript对内容使用eval
。
您可以使用getElementsByTagName
获取文档的正文,因为正文标记不是通常具有ID的内容。
document.getElementsByTagName("body")[0]
您可以放心地假设第一个找到的元素将是您的身体,因为具有多个的页面将是无效的HTML。
答案 2 :(得分:0)
您可以在不使用document.write方法的情况下在您的身体中追加span元素。 document.write不是将元素插入DOM的正确方法。
在页面加载完成后运行的任何document.write语句都将创建一个新页面并覆盖当前页面的所有内容。
您可以使用
这样做的方法。