日期:2014-05-16  浏览次数:20327 次

求救高人: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); 
};



------解决方案--------------------
探讨

引用:

引用:

如果想让1.js中的变量获取2.js的赋值 需要把my_a_id定义为全局变量 在html 中进行定义,在html文件中加入<script language="javascript">var my_a_id = "";</script>,2.js中my_a_id = "aaa";


呵呵。。。。。。。。

本人初学 还望……

------解决方案--------------------
浏览器解析完documemt.write()所在文档内容后才会继续解析document.write()输出的内容,就是说打印出c的时候c是还没有被赋值的。