求救高人:js嵌套js 无效
html代码:
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>a</title>
</head>
<body>
<script language="javascript" src="1.js"></script>
</body>
</html>
1.js
JScript code
var c;
document.write("<script src=\"2.js\" language=\"javascript\"><\/script>");
document.write(c);
2.js
JScript code
c = "aaa";
显示的结果却是:undefined
该怎么写啊?
搜索他们讲的方法基本上都试过了
------解决方案--------------------你那个是异步了,会有浏览器兼容问题的,
document.write(my_a_id);这句执行的时候,2.js还没加载完毕,你可以在window.onload或者自己加个回调处理
------解决方案--------------------如果想让1.js中的变量获取2.js的赋值 需要把my_a_id定义为全局变量 在html 中进行定义,在html文件中加入<script language="javascript">var my_a_id = "";</script>,2.js中my_a_id = "aaa";
------解决方案--------------------
尽量少用 document.write
动态导入js:
// 动态导入js
function include(src,encoding,fun)
{
var s = document.createElement('script');
s.type='text/javascript';
s.charset=encoding; //'gb2312';
s.src = src;
var tags =document.getElementsByTagName('head');
if(typeof(fun)=='function'){
if( document.all ){
s.onreadystatechange = function(){
if(/(complete|loaded)/.test(this.readyState)){
fun(); s.onreadystatechange = null; s.parentNode.removeChild(s);
}};
}else{
s.onload = function(){ fun(); s.onload = null; s.parentNode.removeChild(s); };
}
}
tags[0].appendChild(s);
};
------解决方案--------------------
------解决方案--------------------浏览器解析完documemt.write()所在文档内容后才会继续解析document.write()输出的内容,就是说打印出c的时候c是还没有被赋值的。