由于我把许多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中执行,可能是没有什么差别。