javascript全选功能引发的困惑
大家讲道理
大家讲道理 2017-05-19 10:34:59
[JavaScript讨论组]

直接上代码
代码如下,全选功能不好用

     var _select_all = document.getElementById("select_all");
     var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
    _select_all.addEventListener("click",function() {
        
                            
            for(var i = 0;i<_input.length;i++) {
                 _input[i].checked="checked";
        }
     })

改动一句话

var _select_all = document.getElementById("select_all");
    
    _select_all.addEventListener("click",function() {
         var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
                            
            for(var i = 0;i<_input.length;i++) {
                 _input[i].checked="checked";
        }
     })

为什么把_input放到下面代码正常执行了? 根据作用域回调函数中不是可以获取到外界的变量吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(5)
黄舟

亲测两种都可以啊:https://jsfiddle.net/8j9q69qm/

PHP中文网

测试了一下,这两种都是可以的

PHP中文网

不会的,都一样的

習慣沉默
var _select_all = document.getElementById("select_all");
var _input = document.querySelectorAll("#shop_content ul input[type=checkbox]");
console.log(_input);
_select_all.addEventListener("click",function() {
    
                        
        for(var i = 0;i<_input.length;i++) {
             _input[i].checked="checked";
    }
 })

log出来看看就知道了,如果是undefined的话就知道问题出在那了。

習慣沉默

一个是事先查好节点缓存起来,一个是点击的时候实时去查节点。如果 #shop_content ul input[type=checkbox] 这个选择器对应的节点不会变化的话两种方法是一样的,而且缓存的效率比较高。如果对应节点可能删除、增加或更换,必须使用第二种方法,每次点击的时候实时去查找节点

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号