第一点:其实与第二点的道理差不多,要想alert出来js2,那么就要等加载完毕关于第二点:onload这个是所有信息加载完毕后再执行它调用的函数,
<script language="javascript">
methodO();
</script> 这个则不同,是根据html的由上到下解析顺序解析到它,它就执行了
<script language="javascript">
methodO();
</script> 这个则不同,是根据html的由上到下解析顺序解析到它,它就执行了
也可以
window.onload = function() {
js2();
}
2.setTimeout并不总是在你定的时间后准时执行,如果过了设定的时间后有脚本在运行,set的内容要等一个脚本块执行完了才执行。也就是说要排队
3.函数是一个连续执行的代码块
第二个问题里你给的代码不全,按理说函数是不会执行到一半未经调用就去执行别的代码的。
问题2settimeout是指定时间后执行代码.你先methodO,浏览器会先执行里面能立即执行的代码,并且将里面遇到的settimeout代码保留并计时.然后会执行methodT里的代码,并且计时执行刚才settimeout的代码.同时也请参考楼上各位的答案。
我怕由于网络或者其他原因,造成这个延迟时间不准确!我又不想写一个很长的时间!所以 有没有什么解决办法能不出现这个延迟啊?
问题2我是想知道
怎么能让methodO();方法里面全部的语句都执行完以后,在执行onload中的methodT()方法
里的内容。另外方法放在onload里面和放到onload外面有什么区别
啊?
对不起可能我上面问的写的不是很清楚写了一大堆乱78糟的啊
可是我是
document.write(' <script src="xxxxx.js" type="text/javascript"> </script>');
不知道是否可以实现啊?
即实现 <script>
init();
function init(){ setTimeout(function(){init1();},1000);
setTimeout(function(){init2();},3000);
} function init1(){
document.write(' <script src="js.js" type="text/javascript"> </script>');
alert("1");
} function init2(){
alert("2");
}
</script> 类似上面的逻辑啊
function mainMethod()
{
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},500);
setTimeout(function(){Method3();},1000);
}function writeMethod1(url){
document.write("<script src=\""+url+"\" type=\"text/javascript\"></script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write('<link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write('<script src="' + cssFile + '" type="text/javascript"></script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}我怕没说清楚在说一下逻辑
逻辑是
mainMethod方法调用writeMethod1方法,该方法用document.write方式引入一个Js(xJs.js).
然后这个Js(xJs.js)的属性和方法,被writeMethod2()方法使用,同时writeMethod2()方法也用
document.write方式引入一个Js(xxJs.js).然后这个Js(xxJs.js)的属性方法被方法Method3使用!问题是。我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!(直接使用不行,在引入该Js文件(xJs.js)后, 用setTimeout做一个延迟就可以了)
可是。我在Method3中使用和,alert,writeMethod2方法用document.write引入的Js文件(xxJs.js)
就不行!总是提示找不到变量或对象!但是写法都一样为什么第一个行第二个不行呢?
可能我没说清楚我的不能直接写到函数里面!
我是为了说问题才简单写的我的结构必须是这样啊
function mainMethod()
{
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},500);
setTimeout(function(){Method3();},1000);
}
你这个writeMethod1("JsFile"); 这个运行里面有一个document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>"); 要清楚一点,只要函数里再使用document.write,那么就相当与重写页面了,那么你后面的几个函数页就不存在了
var objHead=document.getElementsByTagName('head');
var objCSS=document.createElement('link');
objCSS.rel='stylesheet';
objCSS.type='text/css';
objCSS.href=css.css;
objHead[0].appendChild(objCSS);JS得可以这么写
var objScript=document.createElement("script");
objScript.src=js.js
我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!
CSS得可以这么写入
var objHead=document.getElementsByTagName('head');
var objCSS=document.createElement('link');
objCSS.rel='stylesheet';
objCSS.type='text/css';
objCSS.href=css.css;
objHead[0].appendChild(objCSS); JS得可以这么写
var objScript=document.createElement("script");
objScript.src=js.js这个方法我也用过总总是说找不到问题是。我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!(直接使用不行,在引入该Js文件(xJs.js)后, 用setTimeout做一个延迟就可以了)
可是。我在Method3中使用和,alert,writeMethod2方法用document.write引入的Js文件(xxJs.js)
就不行!总是提示找不到变量或对象!但是写法都一样为什么第一个行第二个不行呢?
我看了啊...我也看到相关文档说document.write,那么就相当与重写页面了!可是我不明白的是........第一个为什么可以第二个才不行的
我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!
a.html
---<script language="JavaScript">
function LoadJS( id, fileUrl )
{
alert("a.html");
var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.src=fileUrl ;
}
setTimeout(function(){LoadJS("a.js");},5000);
alert( "主页面动态加载a.js并取其中的变量:" + str );
</script>
--
a.js
--
var str = "中国";
alert( "这是a.js中的变量:" + str );我我这样写还是不能引入啊!还是提示找不到啊说明根本没引如a.js成功
function LoadJS(fileUrl)
{ var objHead=document.getElementsByTagName('head');
var oScript= document.createElement("script");
oScript.defer = "defer";
oScript.src=fileUrl ;
objHead[0].appendChild(oScript);
}
setTimeout(function(){LoadJS("a.js");},1000);
setTimeout(function(){alert( "主页面动态加载a.js并取其中的变量:" + str ); },2000);
</script>
看看吧
var objHead=document.getElementsByTagName('head');
objHead[0].appendChild(oScript);
你少了这2句
function LoadJS(fileUrl) {
var html_doc = document.getElementsByTagName('head')[0];
var js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', fileUrl);
html_doc.appendChild(js);
}这种方式可以加载了.....
但是速度很慢.比以前慢多了我不知道
document.write("<script src=\""+url+"\" type=\"text/javascript\"></script>");这样造成速度慢
还是LoadJS方法造成速度慢
-------
1.html
-------
<script src="a.js" type="text/javascript"> </script>
<head>
<script>
alert("1.html");
js1();
</script>
</head>
</html>
-------
a.js
-------
function js1(){
alert("js1");
document.write(' <script src="b.js" type="text/javascript"> </script>');
//js2();//如果在这里,直接这样调用就不行,就不会打alert出来js2
setTimeout(function(){js2();},1); //但是如果延迟,加载哪怕1毫秒则可以alert出来js2
}
-------
b.js
-------
function js2() {
alert("js2");
}
我们来分析
1.html先加载了a.js,alert("js1");
document.write(' <script src="b.js" type="text/javascript"> </script>');
这个时候,它只是在BODY里写进了
<script src="b.js" type="text/javascript"> </script>
这个字串,内部并没有认定加载了b.js文件,所以b.js文件中的alert("js2")并不成功。直到页面加载完成了,setTimeout事件才会被触发。
这里你用setTimeout(function(){js2();},1),程序再次检索整个文件集,发现了
<script src="b.js" type="text/javascript"> </script>
这时你的alert("js2")终于“浮水”了。
所以你说“//但是如果延迟,加载哪怕1毫秒则可以alert出来js2 ”,我说,那怕是0毫秒,也一样alert。
你说“但是如果我延迟加载哪怕1毫秒则可以执行!但是我怕由于网络或者其他原因,造成这个延迟时间不准确!我又不想写一个很长的时间!所以
有没有什么解决办法能不出现这个延迟啊? ”,
我说“直到页面加载完成了,setTimeout事件才会被触发。”,所以问题不存在了。
你的“
function LoadJS( id, fileUrl )
{
alert("a.html");
var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.src=fileUrl ;
} ”
没有成功我的“ script=document.createElement('script');
script.src='b.js';
script.type='text/javascript';
script.defer=true; var head=document.getElementsByTagName('head').item(0);
void(head.appendChild(script));
”似乎成功了。
为什么呢,因为我用后面两句吧b.js偷偷放在了head里面。这样,机制发现head的改变,重新加载b.js,所以可以用这种方法解决这个问题
不过。问T1解决了,问T2你应该不需要了
确实是因为延迟造成的!
希望我这次能说清楚啊!
问题1:我现在就是希望有没有不用写setTimeout就能做到的!因为我不知道这个setTimeout到底设置多少合适!我怕由于网络等问题造成设置少了加载不上,设置多了造成效率低!当然也可以加一个判断,通过判断引入的js里的属性是否存在,来判断是否加载成功!但是我想知道有没有不用setTimeout的方法问题2:我还是不是很明白为什么!有些地方用document.write引入文件可以有些地方却不行!
我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!(直接使用不行,在引入该Js文件(xJs.js)后, 用setTimeout做一个延迟就可以了)
可是。我在Method3中使用和,alert,writeMethod2方法用document.write引入的Js文件(xxJs.js)
就不行!总是提示找不到变量或对象!但是写法都一样为什么第一个行第二个不行呢?
function mainMethod()
{
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},500);
setTimeout(function(){Method3();},1000);
} function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
问题三执行顺序的迷惑:
-------
2.html
-------
<html>
<head>
<script src="xxxx.js" type="text/javascript"> </script>
<script language="javascript">
methodO();
</script>
</head>
<body onload="methodT()">
.
.
.
.
</body>
</html> [code=JScript]
问题3、 2.html按照我测试,他的执行顺序是先执行methodO();然后才执行methodT();但是我在方法methodO()用了
类似setTimeout的方法!结果我发现并不是methodO();执行完,全部的语句,以后才执行methodT()方法的;
由于我是修改别人的代码所以我不想动他的逻辑啊!我不知道他为什么不在methodO();方法中调用methodT();而
是要这样用!我的问题是!怎么能让methodO();方法里面全部的语句都执行完以后,在执行onload中的methodT()方法
里的内容。另外方法放在onload里面和放到onload外面有什么区别啊?问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗?
function getNowT()
{
var d = new Date();
var year = d.getYear();
var month = d.getMonth()+1;
var date = d.getDate();
var day = d.getDay();
var hours = d.getHours();
var minutes = d.getMinutes();
var seconds = d.getSeconds();
var ms = d.getMilliseconds();
return year+"年"+month+"月"+day+"日"+ hours+"时"+minutes+"分"+seconds+"秒"+ms;
}
function mainMethod()
{
var nowStart = getNowT();
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},1);
setTimeout(function(){Method3();},2);
var nowEnd = getNowT();
alert("开始时间"+nowStart);
alert("结束时间"+nowEnd);
} function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
[code=JScript]ps:
另外1--------------------这个没看明白啊....我说“直到页面加载完成了,setTimeout事件才会被触发。”,所以问题不存在了。 这是什么意思啊?所以你说“//但是如果延迟,加载哪怕1毫秒则可以alert出来js2 ”,我说,那怕是0毫秒,也一样alert。
你说“但是如果我延迟加载哪怕1毫秒则可以执行!但是我怕由于网络或者其他原因,造成这个延迟时间不准确!我又不想写一个很长的时间!所以
有没有什么解决办法能不出现这个延迟啊? ”,
我说“直到页面加载完成了,setTimeout事件才会被触发。”,所以问题不存在了。
2----------------
<script language="JavaScript">
function LoadJS(fileUrl)
{ var objHead=document.getElementsByTagName('head');
var oScript= document.createElement("script");
oScript.defer = "defer";
oScript.src=fileUrl ;
objHead[0].appendChild(oScript);
}
setTimeout(function(){LoadJS("a.js");},1000);
setTimeout(function(){alert( "主页面动态加载a.js并取其中的变量:" + str ); },2000);
</script>
这种发发是不行的.我知道我之前LoadJS这个方法有两个参数
您可以运行我的代码依然可以运行的!也可以打印出来信息!这好象是js的允许这种String...str这种的语法风格!
还有 oScript.defer = "defer"; 是针对ie的写法ff有些版本不支持
我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!(直接使用不行,在引入该Js文件(xJs.js)后, 用setTimeout做一个延迟就可以了)
可是。我在Method3中使用和,alert,writeMethod2方法用document.write引入的Js文件(xxJs.js)
就不行!总是提示找不到变量或对象!但是写法都一样为什么第一个行第二个不行呢?
JScript code
function mainMethod()
{
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},500);
setTimeout(function(){Method3();},1000);
} function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
问题三执行顺序的迷惑:
JScript code
-------
2.html
-------
<html>
<head>
<script src="xxxx.js" type="text/javascript"> </script>
<script language="javascript">
methodO();
</script>
</head>
<body onload="methodT()">
.
.
.
.
</body>
</html> [code=JScript]
问题3、 2.html按照我测试,他的执行顺序是先执行methodO();然后才执行methodT();但是我在方法methodO()用了
类似setTimeout的方法!结果我发现并不是methodO();执行完,全部的语句,以后才执行methodT()方法的;
由于我是修改别人的代码所以我不想动他的逻辑啊!我不知道他为什么不在methodO();方法中调用methodT();而
是要这样用!我的问题是!怎么能让methodO();方法里面全部的语句都执行完以后,在执行onload中的methodT()方法
里的内容。另外方法放在onload里面和放到onload外面有什么区别啊?
问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗?
JScript code
function getNowT()
{
var d = new Date();
var year = d.getYear();
var month = d.getMonth()+1;
var date = d.getDate();
var day = d.getDay();
var hours = d.getHours();
var minutes = d.getMinutes();
var seconds = d.getSeconds();
var ms = d.getMilliseconds();
return year+"年"+month+"月"+day+"日"+ hours+"时"+minutes+"分"+seconds+"秒"+ms;
}
function mainMethod()
{
var nowStart = getNowT();
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},1);
setTimeout(function(){Method3();},2);
var nowEnd = getNowT();
alert("开始时间"+nowStart);
alert("结束时间"+nowEnd);
} function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
[code=JScript]
我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!(直接使用不行,在引入该Js文件(xJs.js)后, 用setTimeout做一个延迟就可以了)
可是。我在Method3中使用和,alert,writeMethod2方法用document.write引入的Js文件(xxJs.js)
就不行!总是提示找不到变量或对象!但是写法都一样为什么第一个行第二个不行呢? function mainMethod()
{
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},500);
setTimeout(function(){Method3();},1000);
}
function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
问题三执行顺序的迷惑:
-------
2.html
-------
<html>
<head>
<script src="xxxx.js" type="text/javascript"> </script>
<script language="javascript">
methodO();
</script>
</head>
<body onload="methodT()">
.
.
.
.
</body>
</html> 问题3、 2.html按照我测试,他的执行顺序是先执行methodO();然后才执行methodT();但是我在方法methodO()用了
类似setTimeout的方法!结果我发现并不是methodO();执行完,全部的语句,以后才执行methodT()方法的;
由于我是修改别人的代码所以我不想动他的逻辑啊!我不知道他为什么不在methodO();方法中调用methodT();而
是要这样用!我的问题是!怎么能让methodO();方法里面全部的语句都执行完以后,在执行onload中的methodT()方法
里的内容。另外方法放在onload里面和放到onload外面有什么区别啊?
问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗? function getNowT()
{
var d = new Date();
var year = d.getYear();
var month = d.getMonth()+1;
var date = d.getDate();
var day = d.getDay();
var hours = d.getHours();
var minutes = d.getMinutes();
var seconds = d.getSeconds();
var ms = d.getMilliseconds();
return year+"年"+month+"月"+day+"日"+ hours+"时"+minutes+"分"+seconds+"秒"+ms;
}
function mainMethod()
{
var nowStart = getNowT();
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},1);
setTimeout(function(){Method3();},2);
var nowEnd = getNowT();
alert("开始时间"+nowStart);
alert("结束时间"+nowEnd);
}
function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!(直接使用不行,在引入该Js文件(xJs.js)后, 用setTimeout做一个延迟就可以了)
可是。我在Method3中使用和,alert,writeMethod2方法用document.write引入的Js文件(xxJs.js)
就不行!总是提示找不到变量或对象!但是写法都一样为什么第一个行第二个不行呢? function mainMethod()
{
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},500);
setTimeout(function(){Method3();},1000);
}
function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
问题3执行顺序的迷惑:
2.html按照我测试,他的执行顺序是先执行methodO();然后才执行methodT();但是我在方法methodO()用了
类似setTimeout的方法!结果我发现并不是methodO();执行完,全部的语句,以后才执行methodT()方法的;
由于我是修改别人的代码所以我不想动他的逻辑啊!我不知道他为什么不在methodO();方法中调用methodT();而
是要这样用!我的问题是!怎么能让methodO();方法里面全部的语句都执行完以后,在执行onload中的methodT()方法
里的内容。另外方法放在onload里面和放到onload外面有什么区别啊?
-------
2.html
-------
<html>
<head>
<script src="xxxx.js" type="text/javascript"> </script>
<script language="javascript">
methodO();
</script>
</head>
<body onload="methodT()">
.
.
.
.
</body>
</html> 问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗? function getNowT()
{
var d = new Date();
var year = d.getYear();
var month = d.getMonth()+1;
var date = d.getDate();
var day = d.getDay();
var hours = d.getHours();
var minutes = d.getMinutes();
var seconds = d.getSeconds();
var ms = d.getMilliseconds();
return year+"年"+month+"月"+day+"日"+ hours+"时"+minutes+"分"+seconds+"秒"+ms;
}
function mainMethod()
{
var nowStart = getNowT();
writeMethod1("JsFile");
setTimeout(function(){writeMethod2();},1);
setTimeout(function(){Method3();},2);
var nowEnd = getNowT();
alert("开始时间"+nowStart);
alert("结束时间"+nowEnd);
}
function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
function writeMethod2(){
var file = getMethod1("");//调用,用writeMethod1方法用,document.write引用的JS文件的方法!
var jsFile = file + ".js";
var cssFile = file + ".css";
.//其他一些,用writeMethod1方法用,document.write引用的JS文件的方法、属性
.
.
.
.
document.write(' <link href="' + jsFile + '" rel="stylesheet" type="text/css"/>');
document.write(' <script src="' + cssFile + '" type="text/javascript"> </script>');
}
function Method3(){
var finalValue = getMethod2("");
//调用,用writeMethod2方法用,document.write引用的JS文件的方法!
}
我在writeMethod2方法中使用和,alert,用writeMethod1方法引入的Js文件(xJs.js)
都没有问题!(直接使用不行,在引入该Js文件(xJs.js)后, 用setTimeout做一个延迟就可以了)
可是。我在Method3中使用和,alert,writeMethod2方法用document.write引入的Js文件(xxJs.js)
就不行!总是提示找不到变量或对象!但是写法都一样为什么第一个行第二个不行呢? 已经说过,不必在重复!!因为就是使用一次document.write以后对象和方法都已经不存在,既然不会有变量和对象,不过你排序如何,函数种调用document.write,只要触发一次以后,后面的对象和方法都已经不存在
问题3执行顺序的迷惑:
2.html按照我测试,他的执行顺序是先执行methodO();然后才执行methodT();但是我在方法methodO()用了
类似setTimeout的方法!结果我发现并不是methodO();执行完,全部的语句,以后才执行methodT()方法的;
由于我是修改别人的代码所以我不想动他的逻辑啊!我不知道他为什么不在methodO();方法中调用methodT();而
是要这样用!我的问题是!怎么能让methodO();方法里面全部的语句都执行完以后,在执行onload中的methodT()方法
里的内容。另外方法放在onload里面和放到onload外面有什么区别啊? function writeMethod1(url){
document.write(" <script src=\""+url+"\" type=\"text/javascript\"> </script>");
}
因为你调用这个,执行完得只是writeMethod1的动作,比未执行里面的 <script src=\""+url+"\" type=\"text/javascript\"> </script>,因为这个还未加载完毕,并没有读到他的变化,故而跳过不执行
而执行下面的语句!methodO();只要不包含延时或者
<script src=\""+url+"\" type=\"text/javascript\"> </script>这样类型的语句,他就会执行完毕他的代码
再执行下面的代码,如果含有这类的代码,那么就会出现执行不完毕的现象,但实际他本身的已经执行完,只是那个已经不属于他的!
问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗? $("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊
这个不会这个影响的!赋值而已,影响的应该时是里面的过程而不会是结果赋值
问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗? $("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊
这个不会这个影响的!赋值而已,影响的应该
时是里面的过程而不会是结果赋值
另外延迟时间我设置多少合适呢!设置1行吗?
问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗? $("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊
这个不会这个影响的!赋值而已,影响的应该
时是里面的过程而不会是结果赋值
问题4、 我通过打印时间的方式( alert("开始时间"+nowStart);alert("结束时间"+nowEnd);)判断出这几个方法都不是导致时间过长的原因.其中writeMethod2方法作一些业务逻辑。
然后Method3方法显示writeMethod2方法加载的那些js数据包的数据!
然后用$("xxxxx").innerHTML = value;的方式把js数据包里面的数据显示在叶面上
叶面上都有很多div我想是不是用$("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊?
有什么加速的方法吗? $("xxxxx").innerHTML方式把数值设置到div上耗费的时间太多了啊
这个不会这个影响的!赋值而已,影响的应该
时是里面的过程而不会是结果赋值
也可以
window.onload = function() {
js2();
} 你可以尝试这种方式
故一定要延时