js循环执行函数 本帖最后由 allhack 于 2010-08-13 14:51:38 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写错了,上文所指的APP 就是fuck函数,呵呵 可以用Jqueryvar length=$('a').length;for(var i=0;i<length;i++){ $('a').eq(i).click();} 谢谢你的回答,这个是需要调用jquery.js的是吧? 但如果不使用jquery呢? [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>无标题文档</title><style>li{ display:block; background-color:#CCC; margin-top:2px; cursor:pointer;}</style><script>window.onload = function(){ var lis = document.getElementById("ul").getElementsByTagName("li"); for(var i = 0,j=lis.length;i<j;i++){ lis[i].onclick = (function(n){ return function(){ alert("点击的是第"+ n +"个"); } })(i) };}</script></head><body> <ul id="ul"> <li>0</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul></body></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>无标题文档</title><style>li{ display:block; background-color:#CCC; margin-top:2px; cursor:pointer;}</style><script>window.onload = function(){ var lis = document.getElementById("ul").getElementsByTagName("li"); for(var i = 0,j=lis.length;i<j;i++){ lis[i].onclick = (function(n){ return function(){ alert("点击的是第"+ n +"个"); } })(i) };}</script></head><body> <ul id="ul"> <li>0</li> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul></body></html>怎么没发成功? 非jquery版本var all = document.getElementsByTagName("a"); for (var i = 0; i < all.length; i++) { all[i].onclick(); } 汗、发错了。。<!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=gb2312" /><title>test</title><style>#tb th{ background-color:#ccc;}#tb .liang{ background-color:yellow;}#tb .trOver{ background-color:red;}</style><script>window.onload =function (){ function e(a,f){ for(i=0,j=a.length;i<j;i++){ f.call(a[i],i); } } t = document.getElementById("tb"), r = t.getElementsByTagName("tr"), c = t.getElementsByTagName("td"); e(c,function(n){ this.onclick = function(){ idx = this.cellIndex; e(c,function(){ this.style.backgroundColor=""; }); e(r,function(b){ if(b!=0&&idx!=0&&this.cells[idx])this.cells[idx].style.backgroundColor="green"; }); } }); e(r,function(n){ l = this.childNodes.length; if(n!=0 && l>1 && n%2==0)this.className="liang"; this.onmouseover = function(){ if(n!=0)this.className += " trOver"; }; this.onmouseout = function(){ if(n!=0)this.className = this.className.replace(" trOver",""); }; })}</script></head><body><table id="tb" cellspacing="0" cellpadding="0" border="1"> <tr> <td> </td> <th>Title</th> <th>Title</th> <th>Title</th> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th colspan="4">分类啊</th> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th colspan="4">分类啊</th> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> <tr> <th>Title</th> <td>Data</td> <td>Data</td> <td>Data</td> </tr> </table></body></html>里面的 function e 就是循环函数 6楼正解!如果不用jquery而要实现3楼那个功能就是这样! 这样写貌似在事件处理函数里不能取到Dom标准的事件对象,在IE下的事件对象里的值也有偏差,比如一个click事件,window.event对象的clientX属性是鼠标的位置,并不是鼠标点击那个元素的位置。 不过这样写的话会把页面中所有<a>标签下的都取出来 谢谢,但是遇到没有 onclick的链接怎么办? 我的直接被无视么?难道还要我提取出来?function e(a,f){ for(i=0,j=a.length;i<j;i++){ f.call(a[i],i); }}arr = document.getElementsByTagName("a");e(arr,function(n){ this.onclick = (function(i){ return function(){ alert("你点击了第" + i +"个链接"); return false; }; })(n)}); 可以判断下onclick是否有效if (all[i].onclick){all[i].onclick();} CDN 的疑惑 如何转化成JSON onpropertychange的使用 js 继承并扩展父类方法 void(0)禁示乱码 正则匹配 xmlhttp.send返回的responseXML怎样赋值给一个DOM?[在线等] 同步图片的src和input的 求Windows Update 站点中“安装历史”页面里面的表格实现 怎样让pc喇叭发声? 急速请教jsp问题 关于js 按钮控制
var length=$('a').length;
for(var i=0;i<length;i++){
$('a').eq(i).click();
}
<!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>无标题文档</title>
<style>
li{ display:block; background-color:#CCC; margin-top:2px; cursor:pointer;}
</style>
<script>
window.onload = function(){
var lis = document.getElementById("ul").getElementsByTagName("li");
for(var i = 0,j=lis.length;i<j;i++){
lis[i].onclick = (function(n){
return function(){
alert("点击的是第"+ n +"个");
}
})(i)
};
}
</script>
</head><body>
<ul id="ul">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</body>
</html>[/code]
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
li{ display:block; background-color:#CCC; margin-top:2px; cursor:pointer;}
</style>
<script>
window.onload = function(){
var lis = document.getElementById("ul").getElementsByTagName("li");
for(var i = 0,j=lis.length;i<j;i++){
lis[i].onclick = (function(n){
return function(){
alert("点击的是第"+ n +"个");
}
})(i)
};
}
</script>
</head><body>
<ul id="ul">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</body>
</html>
怎么没发成功?
for (var i = 0; i < all.length; i++)
{
all[i].onclick();
}
发错了。。
<!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=gb2312" />
<title>test</title>
<style>
#tb th{
background-color:#ccc;
}
#tb .liang{
background-color:yellow;
}
#tb .trOver{
background-color:red;
}
</style>
<script>
window.onload =function (){
function e(a,f){
for(i=0,j=a.length;i<j;i++){
f.call(a[i],i);
}
}
t = document.getElementById("tb"),
r = t.getElementsByTagName("tr"),
c = t.getElementsByTagName("td");
e(c,function(n){
this.onclick = function(){
idx = this.cellIndex;
e(c,function(){
this.style.backgroundColor="";
});
e(r,function(b){
if(b!=0&&idx!=0&&this.cells[idx])this.cells[idx].style.backgroundColor="green";
});
}
});
e(r,function(n){
l = this.childNodes.length;
if(n!=0 && l>1 && n%2==0)this.className="liang";
this.onmouseover = function(){
if(n!=0)this.className += " trOver";
};
this.onmouseout = function(){
if(n!=0)this.className = this.className.replace(" trOver","");
};
})
}
</script>
</head>
<body>
<table id="tb" cellspacing="0" cellpadding="0" border="1">
<tr>
<td> </td>
<th>Title</th>
<th>Title</th>
<th>Title</th>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th colspan="4">分类啊</th>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th colspan="4">分类啊</th>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
<tr>
<th>Title</th>
<td>Data</td>
<td>Data</td>
<td>Data</td>
</tr>
</table>
</body>
</html>
里面的 function e 就是循环函数
这样写貌似在事件处理函数里不能取到Dom标准的事件对象,在IE下的事件对象里的值也有偏差,比如一个click事件,window.event对象的clientX属性是鼠标的位置,并不是鼠标点击那个元素的位置。
难道还要我提取出来?
function e(a,f){
for(i=0,j=a.length;i<j;i++){
f.call(a[i],i);
}
}
arr = document.getElementsByTagName("a");
e(arr,function(n){
this.onclick = (function(i){
return function(){
alert("你点击了第" + i +"个链接");
return false;
};
})(n)
});
if (all[i].onclick)
{
all[i].onclick();
}