yzx99

导航

 

由于我把许多JS函数分散到各个文件,造成一个JS需要另一个JS的函数才能运行。一种解决方案是使用运行时追加块的方法,在JS中追加另一个JS,代码如下:
new_element=document.createElement("script");
new_element.setAttribute("type", "text/javascript");
new_element.setAttribute("src", "另一个.js");
document.body.appendChild(new_element);
function b1()
{
 a1("B1");
}
另一个JS文件内容如下:
function a1(sInfo)
{
 alert("A1 - " + sInfo);
}

但这种方法存在这几个问题:
·JS文件引用的声明必须放在</body>之后
不能这样写
<html>
<head>
<script src=b1.js></script>
</head>
<body>
</body>
</html>
而只能这样写
<html>
<head>
</head>
<body>
</body>
<script src=b1.js></script>
</html>
后来找到一种解决方案,在body中的onload事件来处理
<script>
function loadjs()
{
 loadjs4b1();
}
</script>
……
<body onload="loadjs();">
b1.js中写成子程序loadjs4b1:
function loadjs4b1()
{
 new_element=document.createElement("script");
 new_element.setAttribute("type","text/javascript");
 new_element.setAttribute("src","a1.js");
 document.body.appendChild(new_element);
}

最后又发现,搞了半天,还不如这种简单直观:
直接在b1.js中加入这句话,也不要new_element、appendChild等操作了,也不要子程序,body中也不必设onload处理代码。
document.write('<script type="text/javascript" src="a1.js"></'+'script>'); 

测试后发现不必把script拆分也是可行的

document.write("<script type=\"text/javascript\" src=\"a1.js\"></script>"); 

·在JS文件中直接运行另一个JS的函数还是不行,而要等页面全部装载完成才行
如JS中这样代码不成功
function b1()
{
 a1("B1");
}
b1();
而HTML中这样的代码就行
<input type=button value=ok onclick="b1();" />

可以使用上面的一种方法:即在body onload中执行,可能是没有什么差别。

posted on 2008-08-22 10:45  yzx99  阅读(1927)  评论(0编辑  收藏  举报