setTimeout的循环难题 当你等待num*1000毫秒时间后,再执行document.write(newletter),此时你的for已经结束,newletter变成letter最后一个字母了,这样就 .... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可能你延时的时间 for 循环已经结束了 , 你只是延时了输出for (var num=0; num<5; num++) {var newletter=letter[num]; setTimeout("document.write(newletter)", num*1000)} 换这样测试看看 for (var num=0; num<5; num++) {var newletter=letter[num]; setTimeout("out(newletter)", num*1000)}function out(param){ alert(param); document.write(param);} <HTML> <HEAD> <TITLE> </TITLE><script> var letter = new Array("H","e","l","l","o"); var num = 0;function print(){ if(num < letter.length){ document.getElementById("osp").innerHTML += letter[num]; num++; }else{ clearInterval(timer); }}var timer = window.setInterval("print()",1000);</script> </HEAD> <BODY> <span id="osp"></span> </BODY></HTML> <script> var letter = new Array("H","e","l","x","o"); var num=0, timer;function write1() { if(parseInt(num)>=5) { clearTimeout(timer); } window.alert(letter[num]); num+=1; timer=setTimeout("write1();", num*1000);}setTimeout("write1();", num*1000);</script>这样? setTimeout("document.write(newletter)", num*1000)} 该函数并不等待建议用num=0来代替for循环3楼可以 两个问题:1、document.write会重写当前文档,会把以前的输出都清除2、用setInterval这个函数就有循环的功能了,或者用setTimeout函数递归代码如下:var letter = new Array("H","e","l","l","o"); var num=0;setInterval("document.body.innerHTML+=letter[num%5];num++",1000); 你的设计根本就不可能,即使把那个必包问题解决了。因为一旦页面转载完成后,document.write就会把页面内容清理掉不信你可以实验一下下面的代码<HTML><HEAD><TITLE></TITLE></HEAD><BODY><div id="div1" name="div1"></div><script>showLetter();document.write("abc");setTimeout("document.write(123)", 1000)</script></BODY></HTML>要实现那样的效果可以很简单<HTML><HEAD><TITLE></TITLE></HEAD><BODY><div id="div1" name="div1"></div><script>var letter = new Array("H","e","l","l","o"); function showLetter(){ if(letter.length>0){ div1.innerHTML+=letter.shift(); setTimeout("showLetter()", 1000) }}showLetter();/*document.write("abc");setTimeout("document.write(123)", 1000)*/</script></BODY></HTML> js正则表达式 求易飞6.0注册机 JS在网站网页控制图片大小,不起作用。 如何通过返回值来判断网页里的文字是否显示,如何实现? 如何在修改<title>的值 jQuery datagrid 列错位应该如何解决?? jquery append onclick无效 javascript的绝对值函数是那一个 如何用脚本在网页中用一张图片连接一个外部程序,点击图片时运行外部程序。 jQuery页面加载时从数据中加载数据 请问jiavascript 里面回车的定义 getElementsByName的问题
for (var num=0; num<5; num++)
{
var newletter=letter[num];
setTimeout("document.write(newletter)", num*1000)
} 换这样测试看看
for (var num=0; num<5; num++)
{
var newletter=letter[num];
setTimeout("out(newletter)", num*1000)
}
function out(param)
{
alert(param);
document.write(param);
}
<HTML>
<HEAD>
<TITLE>
</TITLE>
<script> var letter = new Array("H","e","l","l","o");
var num = 0;
function print(){
if(num < letter.length){
document.getElementById("osp").innerHTML += letter[num];
num++;
}else{
clearInterval(timer);
}
}
var timer = window.setInterval("print()",1000);</script>
</HEAD>
<BODY>
<span id="osp"></span>
</BODY>
</HTML>
<script> var letter = new Array("H","e","l","x","o");
var num=0, timer;function write1() {
if(parseInt(num)>=5) {
clearTimeout(timer);
}
window.alert(letter[num]);
num+=1;
timer=setTimeout("write1();", num*1000);
}setTimeout("write1();", num*1000);
</script>
这样?
该函数并不等待建议用num=0
来代替for循环3楼可以
1、document.write会重写当前文档,会把以前的输出都清除
2、用setInterval这个函数就有循环的功能了,或者用setTimeout函数递归代码如下:
var letter = new Array("H","e","l","l","o");
var num=0;
setInterval("document.body.innerHTML+=letter[num%5];num++",1000);
就会把页面内容清理掉不信你可以实验一下下面的代码
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<div id="div1" name="div1"></div>
<script>
showLetter();
document.write("abc");
setTimeout("document.write(123)", 1000)
</script>
</BODY>
</HTML>要实现那样的效果可以很简单
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<div id="div1" name="div1"></div>
<script>
var letter = new Array("H","e","l","l","o");
function showLetter(){
if(letter.length>0){
div1.innerHTML+=letter.shift();
setTimeout("showLetter()", 1000)
}
}
showLetter();
/*document.write("abc");
setTimeout("document.write(123)", 1000)*/
</script>
</BODY>
</HTML>