首页 > 其他分享 >js动态查询指定class名的所有元素,querySelectorAll()和querySelectorAll()的区别

js动态查询指定class名的所有元素,querySelectorAll()和querySelectorAll()的区别

时间:2023-04-16 09:02:32浏览次数:40  
标签:move getElementsByClassName document querySelectorAll 元素 js moveDivs class

"document.querySelectorAll()"方法返回的是一个静态的 NodeList(节点列表),即它只能在页面刚加载时获取到一次,之后即使有新的元素符合选择器,它也不会再重新获取。如果你想动态地获取到新增的元素,可以使用 "document.getElementsByClassName()""document.getElementsByTagName()"。这些方法返回的是一个 HTMLCollection(HTML 元素集合),它们是动态的,可以在任何时候获取到所有匹配的元素,包括新增的元素。

使用上需要注意两者的差别,例子:

// 获取所有class为"card"和"imageDiv"的元素,将他们的鼠标指针样式改成移动图标
var moveDivs = document.querySelectorAll(".card, .imageDiv");

function selectMode() {
    moveDivs.forEach(function(moveDiv) {
        // 修改鼠标指针样式为'move'
        moveDiv.style.cursor = "move";
    });
}

上面是querySelectorAll()的示例,下面是getElementsByClassName()的示例。

var moveDivs = document.getElementsByClassName("card imageDiv");

function selectMode() {
    for (var i = 0; i < moveDivs.length; i++) {
        moveDivs[i].style.cursor = "move";
    }
}

getElementsByClassName()不需要使用逗号分隔多个类名,而是将它们作为一个空格分隔的单一字符串传递给getElementsByClassName()方法。getElementsByClassName()不支持forEach(),如果想要在一个 HTMLCollection 中遍历元素,需要使用for循环,而不是forEach()。

标签:move,getElementsByClassName,document,querySelectorAll,元素,js,moveDivs,class
From: https://www.cnblogs.com/adrow/p/17322492.html

相关文章

  • js 异步任务执行顺序问题
    js是单线程的(非阻塞的),实现方法就是事件循环;分同步任务和异步任务;newPromise((resolve,reject)=>{resolve(1)console.log('log1')}).then(()=>{console.log('log2')})console.log('log3')setTimeout(()=>......
  • Vue3中(vite.config.js)配置打包的时候去除console.log
    参考:https://www.cnblogs.com/lovewhatIlove/p/16476165.html安装tersernpmadd-Dterservite中配置import{defineConfig}from"vite";importvuefrom"@vitejs/plugin-vue";importvueJsxfrom"@vitejs/plugin-vue-jsx";importvisua......
  • js方法实现 10+ 100+ 1000+ 10000+
    将数字类型优化12=>10+120=>100+1200=>1000+10以内不管调用后赋值进行数字化item.read_num=Number(util.picture(item.read_num))直接cv代码数字优化自己调用定义函数**//浏览量优化functionpicture(num){if(num<10){returnnum;}va......
  • js 数组、对象转json 以及json转 数组、对象
    1、JS对象转JSON方式:JSON.stringify(obj)varjson={"name":"iphone","price":666};//创建对象;varjsonStr=JSON.stringify(json);//转为JSON字符串console.log(jsonStr);2、JS数组转JSON//数组转json串vararr=[1,2,3,{a:1}];JSON.st......
  • js 浏览器中当前页下载文件
    1downloadImg(url:string,name:string):void{2letxhr=newXMLHttpRequest();3xhr.responseType='blob';4xhr.open('GET',url);5xhr.send();6xhr.addEventListener('load',function(){7letblob=xhr.resp......
  • 在Node.JS中,调用JShaman的Web API接口,加密JS代码。
    在Node.JS中,调用JShaman的WebAPI接口,加密JS代码。源码varjs_code=` functionNewObject(prefix) { varcount=0; this.SayHello=function(msg) { count++; alert(prefix+msg); } this.GetCount=function() { returncount; } } varobj=newNewO......
  • json数据按照某一个相同键值进行分类成一个新的二维json数组
    1formatTreeData(checkNodes){2varmap={},3targetData=[];4checkNodes.forEach(item=>{5if(!map[item.groupKey]){6targetData.push({7value:item.groupKey,8label......
  • momentjs学习笔记
    momentjs学习笔记文档:http://momentjs.cn/docs/#/get-set/参考:https://blog.csdn.net/yuan_jlj/article/details/117294481......
  • transtale.js v1.1
    functiongc(){varname="transLang=";varca=document.cookie.split(';');for(vari=0;i<ca.length;i++){varc=ca[i].trim();if(c.indexOf(name)==0)returnc.substring(name.length,c.length);......
  • 关于js对象遍历保证顺序的问题
    Object.keys(obj).sort().forEach(...),注:仅用于对象的key值是可定义顺序的,如key值为时间错,数字等,通过sort(),可默认按照数组大小排序(也可通过sort的自定义函数排序)object.keys/values()和forin不能保证对象传成数组或遍历的顺序友情链接1友情链接2......