• 关于

    跳出each循环

    的搜索结果

回答

for循环和forEach方法之间最实质的区别在于,对于前者,您可能会break跳出循环。您可以continue通过简单地从传递给的函数返回来进行模拟forEach,但是无法完全停止循环。 除此之外,两者有效地实现了相同的功能。由于变量提升,另一个小差异涉及for循环中索​​引的范围(以及所有包含变量的范围)。 // 'i' is scoped to the containing function for (var i = 0; i < arr.length; i++) { ... } // 'i' is scoped to the internal function arr.forEach(function (el, i) { ... }); 但是,我发现它forEach更具表现力-它表示您遍历数组的每个元素的意图,并且为您提供了对该元素的引用,而不仅仅是索引。总体而言,它主要取决于个人喜好,但是如果可以使用forEach,我建议您使用它。 这两个版本之间还有一些实质性差异,特别是在性能方面。实际上,forEach如本jsperf测试所示,简单的for循环的性能要比方法好得多。 是否需要这种性能取决于您自己决定,在大多数情况下,我倾向于表现力胜于速度。此速度差异可能是由于在稀疏数组上进行操作时基本循环与方法之间的较小语义差异所致,如本答案所述。 如果您不需要行为forEach和/或需要尽早突破循环,则可以使用Lo-Dash _.each作为替代,它也可以跨浏览器工作。如果您使用的是jQuery,它还提供了一个类似的$.each,只需注意每个变体中传递给回调函数的参数的差异。 (对于forEachpolyfill,如果您选择使用那条路线,它应该可以在较旧的浏览器中正常工作。)

保持可爱mmm 2020-02-08 13:51:16 0 浏览量 回答数 0

回答

引用来自“milin”的评论直接用jquery好了,写的那么麻烦 以下代码取自: JS, JQUERY实现全选,反选。 其中,我将 <script src="js/jquery-1.8.3.min.js"></script> 改成: <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> 测试一下,似乎正是你所要的效果。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="checkbox" value="全选" id="ckAll"/>水果</br> <div class="box"> <input type="checkbox" value="苹果" id="apple"/>苹果 <input type="checkbox" value="香蕉" id="bann"/>香蕉 <input type="checkbox" value="橘子" id="origin"/>橘子 </div> <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> <script type="text/javascript">        //给所有 .box input 元素添加 checked = ckAll 当前的状态;        //prop('checked',value) ,第一个值获取属性,第二个值:设置属性值。prop只有一个参数时,表示获取元素属性。         $('#ckAll').click(function(){            $('.box input').prop('checked',$(this).prop('checked')); }); $('.box input').click(function(){ //each 便利每一个元素,让其执行该函数 $('.box input').each(function(){ if(!$(this).prop('checked')){ $('#ckAll').prop('checked',false); //有一个不满足就 跳出该循环,避免执行下面 return false; }else{ $('#ckAll').prop('checked',true); } }) })</script> </body> </html>  ######嗯嗯,是这样的,感谢分享!######一个不选中的场景,是否应当写成:if(!select1Input[i].checked){...}? 你少写了属性:checked。######if(!select1Input[i].checked){...}还是不管用###### 提问: 识别号为"selectAll"的html元素是什么类型?(type="?") 鉴于代表它的变量all 有个属性onclick (all.onclick), 我猜是 type="button"。可是它同时又有一个属性 checked, 我想它可能是 type="checkbox"。因此,我觉得,这个应当设立两个元素:一个 type="button", 一个 type="checkbox"。 请告诉我 元素 "selectAll" 是什么类型(type="?")。我不太明白这句话:"一个不选中,全选框也取消的效果"。全选框是否指的是 id="selectAll" 这个元素? "也取消" 是否是指 这个全选框消失?或它的checked 由 true 变为 false?  建议: 1.    定义 方法 selectReverse 的代码是否可以改成: var selectReverse = reverse.onclick = function(){     for (var i=0; i<select1Input.length; i++) {     select1Input[i].checked= !select1Input[i].checked;     } } 2.   将变量名称 reverse 换成 toggle。Toggle(切换),即使用自定义效果来显示或隐藏匹配的元素。这里,指的是 在  选中/未选中 (checked:true/false) 之间切换。鉴于 reverse 已经被 js 用于颠倒数组中元素的顺序的方法名: reverse(), 这里就不宜再用做其它的意思了。又发现,jQuery 中 toggle() 方法 是用来切换元素的可见状态的。如果是要"全选框也取消",即 全选框也消失, 那么 toggle 就最合适不过了。######回复 @良辰2250 : 我刚发一贴回答。可能正合你意。######回复 @tcxu : 点全选复选框可以全部选中,如果取消其中一个选项,全选复选框就不会选中。我是想让全选复选框与它的选项们之间有一个这样联动的效果呢######回复 @良辰2250 : 谢谢答复。你说:"一个不选中,全选框也取消的效果"。这是什么效果? 看来,全选框指的是 id="selectAll" 这个元素。 "也取消" 指是什么情况?是指 这个全选框消失, 还是指,一旦全选框的 checked 为 false, 其它所有的checkbox 的 checked 都会 是 false?######select1Input[i].checked= !select1Input[i].checked; 嗯,这样会更好######都是复选框:全选、反选、各选项: <label><input id="selectAll" type="checkbox" />全选/取消全选</label> <label><input id="selectReverse" type="checkbox" />反选</label><label><input type="checkbox" name="ability" />js</labe>######var selectAll=function (flag){ for(var i=0;i<select1Input.length;i++){ select1Input[i].checked=flag; } all.checked=flag; } 难道是这个意思?######和上面的效果也一样######直接用jquery好了,写的那么麻烦######借助于 网上的代码,如: <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script> 有一个弊端:万一那个代码网页找不到(当然,不希望如此),你自己的代码也就无法运行了。我明白了你的用意之后,就尝试修改你的代码。结果发现,不用 JQuery 也会奏效。请测试。 var all = document.getElementById('selectAll'); var reverse = document.getElementById('selectReverse'); var select1Input = document.getElementsByName('ability'); var selectAll = function(flag){ for (var i=0; i<select1Input.length; i++){ select1Input[i].checked = flag; } } for (var i=0;i<select1Input.length;i++) select1Input[i].onclick = function(){ all.checked = false; } var selectReverse = reverse.onclick = function(){ for (var i=0; i<select1Input.length; i++) { select1Input[i].checked= !select1Input[i].checked; } } all.onclick = function(){ if (all.checked) { selectAll(true); } if (!all.checked){ selectAll(false); } }  ######谢谢啦我参考了http://www.cnblogs.com/lk4525/p/6513924.html 里面一个计数器,补充了一点######/* 全选、不选、反选 */ var all = document.getElementById('selectAll'); var reverse = document.getElementById('selectReverse'); var select1Input = document.getElementsByName('ability'); var selectAll = function selectAll(flag) { for(var i=0; i<select1Input.length; i++) { select1Input[i].checked = flag; } } for(var i=0; i<select1Input.length; i++) { select1Input[i].onclick = function() { //引入计数器 var sum = 0; for(var j=0; j<select1Input.length; j++) { if(select1Input[j].checked) { sum += 1; if(sum == select1Input.length) { all.checked = true; } else { all.checked = false; } } } } } var selectReverse = reverse.onclick = function(){ for (var i=0; i<select1Input.length; i++) { select1Input[i].checked= !select1Input[i].checked; } } all.onclick = function() { if(all.checked) { selectAll(true); } if(!all.checked) { selectAll(false); } }  ######$(document).on("click", ".checkAll", function (ev) { $(this).parents("table").find(".option .checkSingle").prop("checked", $(this).prop("checked")); }); $(document).on("click", ".checkSingle", function (ev) { var checked = $(this).parents("table").find(".option .checkSingle:not(:checked)").length == 0; $(this).parents("table").find(".checkAll").prop("checked", checked); });######回复 @Tis : 嗯嗯,方法有很多######判断全选框是否应该选中,只要判断 单选框的选中数量 和 总数量是否相等。######为什么写到循环里,直接all.checked=flag不可以?并且你click的时候已经改变all了,为什么还要在selectall里面改变下。还有,全选click里面的if意义在哪?直接selectAll(this.checked)不就好了######测试:点全选,再取消一个选项,再选中,会发现全选框居然不选中了。selectAll(flag)在all.onclick的里面是可以全选,但会存在一个如上的问题。所以引入一个计时器(选中的要和全部数一样),这时所有复选框都选中了,全选框才会是选中的状态

kun坤 2020-06-09 13:59:32 0 浏览量 回答数 0

问题

【javascript学习全家桶】934道javascript热门问题,阿里百位技术专家答疑解惑

管理贝贝 2019-12-01 20:07:22 6202 浏览量 回答数 1

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板