Javascript getElementById在单独的JS文件中,src用javascript编写

时间:2009-08-27 12:13:22

标签: javascript

我希望有人包含我的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。

米歇尔

3 个答案:

答案 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语句都将创建一个新页面并覆盖当前页面的所有内容。

您可以使用

appendChild

这样做的方法。