js 如何循环执行同一方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 如何循环执行同一方法相关的知识,希望对你有一定的参考价值。
方法1:function cc (obj) var str+=obj.value;
方法2:function selall()
var cc = document.getElementsByTagName("input");
for (var i = 0; i < cc.length; i++)
cc[i]? //这里如何写才能每个循环都调用方法1?
方法2 内的变量cc不能与方法1重名;
示例代码如下 测试可以
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script language="javascript" type="text/javascript">
var str='';
function cfun(obj) str += obj.value;
function selall()
var cc = document.getElementsByTagName("input");
for (var i = 0; i < cc.length; i++)
cfun(cc[i]);
alert(str);
</script>
</head>
<body>
<input type="text" id="txt1" value="你好" />
<input type="text" id="txt2" value="朋友" />
<a href="javascript:selall()">点击显示</a>
</body>
</html> 参考技术A function dometemp(temp)
console.log(temp);
function dometemp1(temp)
console.log(temp);
setTimeout(function()dometemp1('这是通过setTimeout过来的');,1000);
function dometemp2(temp)
console.log(temp);
//方法1:利用循环
for(var i=0;i<=100;i++)
dometemp(i);
//方法2:利用定(延)时器:
//①延时器需要在方法体(dometemp方法)中重复,可用window.clearTimeout()清除
setTimeout(function()dometemp1('这是通过setTimeout过来的');,1000);
//②定时器(可以使用window.clearInterval()清除)
setInterval(function()dometemp2('这是通过setInterval过来的');,1000); 参考技术B
DEMO:
<body><div id="mydiv">0</div>
<input type="button" value="startTask" onclick="startTask();"/>
</body><script>
//定时器引用
var taskId;
function startTask()
//每秒取调用一次show方法
taskId=setInterval(show,1000);
//该方法计数器
function show()
var div = document.getElementById("mydiv");
var val = parseInt(div.innerHTML) + 1;
div.innerHTML = val;
</script> 参考技术C selall函数里面定义cc变量,这个变量为局部变量,因为跟方法1的cc同名,因此不能访问到方法1的cc.
如果不同名的话,比如方法1:function bb()
那么直接 bb(cc[i]);就可以了。
但是,你的方法1中做的事情是var str+=obj.value;这里的str也是局部变量,无法把值维持或带出来,等于什么事都没做。 参考技术D 方法2:
function selall()
var objs = document.getElementsByTagName("input");
for (var i = 0; i < objs.length; i++)
//注意cc是函数名,,不要也给你的数组也取跟函数一样的名字,,容易弄混淆
cc(objs[i]);
如何让JS代码里面判断该执行完毕后,再继续循环执行该代码下一次
<html>
<head>
<script>
function testfun()
var frames = document.getElementsByTagName('iframe');
for (var i = 0; i < frames.length; i++)
var frame = frames[i];
if(frame.name == 'frame1')
frame.contentWindow.document.getElementById("form").submit();
</script>
</head>
<body>
<input name="a" type="button" onClick="testfun()" value="submit" >
<iframe src="cs4.asp" name="frame1"></iframe>
<iframe src="cs5.asp" name="frame1"></iframe>
</body>
</html>
如何让JS里的程序循环执行一次延迟两秒再继续执行
var frames = document.getElementsByTagName('iframe');
for (var i = 0; i < frames.length; i++)
var frame = frames[i];
if(frame.name == 'frame1')
frame.contentWindow.document.getElementById("form").submit();
// 两秒后再执行testfun
setTimeout(testfun, 2000);
// 如果页面加载后马上执行的话加下面的
// testfun();
// 如果页面加载后等2秒再执行的话加下面的
// setTimeout(testfun, 2000);追问
大哥 我是想要实现 每次提交一个iframe页面里面的form 延迟2000毫秒,然后再提交下一个iframe页面里面的form,这样的效果。。不是延迟2秒执行提交所有iframe。
感谢大哥再次帮我解决这个问题。
不太明白。
提交->页面加载完->等两秒->再提交?
这个代码不是可以是实现提交页面里所有NAME为 frame1的调用页面里面的表单么。
我希望实现延迟执行
每提交一次 NAME为 frame1的调用页面 然后等两秒
然后再次执行下个被找到的 NAME为 frame1的调用页面
var q = [];
var frames = document.getElementsByTagName('iframe');
for (var i = 0; i < frames.length; i++)
var frame = frames[i];
if(frame.name == 'frame1')
// 添加到数组里
q.push(frame);
function submit ()
if (q.length)
// 获取第一个frame并从数组中删除
var frame = q.shift();
frame.contentWindow.document.getElementById("form").submit();
// 两秒后提交下一个
setTimeout(submit, 2000);
// 提交第一个
submit();
参考技术A setTimeout 参考技术B setInterval 或者setTimeout 你自己查一下吧
以上是关于js 如何循环执行同一方法的主要内容,如果未能解决你的问题,请参考以下文章