帮忙看下如下的javascript程序

来源:百度知道 编辑:UC知道 时间:2024/06/27 12:19:19
<form>
<input type="button" onclick="st()" value="生成路径图">
</form>
<script language="javascript">
function st()
{
var imgs=document.getElementsByTagName("img");
var xleft=new Array();
var ytop=new Array();
var i;
for(i=0;i<imgs.length;i++)
{
xleft[i]=imgs[i].offsetLeft
ytop[i]=imgs[i].offsetTop
document.write(xleft[i])
document.write(ytop[i])
}
}
</script>

以上是获取图片坐标信息的程序。上面有三个图片,已经在页面显示了。所以下面的imgs.length应该是3。这也已经确认了。但上面的语句执行不正确。当我按下button的时候,本来显示好好的按钮和图片都消失。循环语句只循环一次并只输出第一个图片的坐标。不知道为什么。但是当我去掉function st(),只保留function st()里的程序代码时却执行正确。望高手指教

是因为document.write(xleft[i]);document.write(ytop[i]);这两句引起的,
他们是在document内输出数据,之后就只有document.write输出的数据,所以在写出第一个图片的数据后,页面中就不在有其他图片了,所以在循环中第二个之后的图片对象就已经不存在了的。所以永远取不出其他图片的对象。
去掉st()后,页面顺序执行所有语句,所以不会出错。

document.write用的不对,这个只有在构建文档的过程中才可以输出到当期文档。当文档构建完成后,你在document.write就会新建一个document,所以你会看到一个空白的页面,写的坐标。你把function st() 去掉后,变成在构建文档时执行,所以会写在当前文档中。
不知道说清了没有