Javascript操作Dom(拥抱native)

来源:互联网 发布:mac怎么卸载双系统 编辑:程序博客网 时间:2024/06/11 04:29

在用JQuery操作Dom的时候,确实是件舒服的事情。但是与此同时,原生的Javascript操作dom方法也在不断地强大,拥抱native

getElementById()

通过其ID返回元素的引用,这个是最熟悉的

document.getElementById('id');

getElementByTagName()

返回具有HTMLCollection给定标签名称的元素。搜索完整的文档,包括根节点。返回的HTMLCollection是活的,这意味着它会自动更新,以保持与DOM树的同步,而无需document.getElementsByTagName()再次调用。

document.getElementByTagName(),
element.getElementByTagName()两者类似,只是document会搜索全部

<script>    var all = document.getElementByTagName('p');    // all.length : 5    var div1 = document.getElementById('div1');    var div1Paras = div1.getElementsByTagName('p');    // div1Paras.length : 3</script><body>    <p>Some body text</p>    <p>Some body text</p>    <div id="div1">        <p>Some div1 text</p>        <p>Some div1 text</p>        <p>Some div1 text</p>    </div></body>

querySelector()

返回文档中匹配指定的选择器组的第一个元素(使用深度优先先序遍历文档的节点 )。

<body style="border: solid green 3px">    <p class="p1">Some body text</p>    <p class="p1">Some body text</p>    <div id="div1">        <p>Some div1 text</p>        <p>Some div1 text</p>        <p>Some div1 text</p>    </div>    <script>    var classN = document.querySelector('.p1');    var id = document.querySelector('#div1');    </script></body>

来个更强大的

<div class="user-panel main">    <input name="login"/> //这个标签将被返回</div><script>    var el = document.querySelector("div.user-panel.main input[name=login]");</script>

简直就是JQuery中$()的翻版,再看看浏览器的情况,还是杠杠滴
这里写图片描述


querySelectorAll()

返回与指定的选择器组匹配的文档中的元素列表(使用文档节点的深度优先预先遍历)。返回所有匹配元素节点的非活动 NodeList状态。

<body style="border: solid green 3px">    <p class="p1">Some body text</p>    <p class="p1">Some body text</p>    <div id="div1">        <p>Some div1 text</p>        <p>Some div1 text</p>        <p>Some div1 text</p>    </div>    <script>    var classN = document.querySelectorAll('.p1');    console.log(classN); // classN.length : 2    </script></body>

浏览器情况
这里写图片描述


getElementsByClassName

返回具有所有给定类名的所有子元素的类数组对象。
元素是活着HTMLCollection的元素。这意味着它会自动更新

<body style="border: solid green 3px">    <p class="p1">Some body text</p>    <p class="p1">Some body text</p>    <div id="div1">        <p>Some div1 text</p>        <p>Some div1 text</p>        <p>Some div1 text</p>    </div>    <script>    var classN = document.getElementsByClassName('p1');    console.log(classN); // classN.length : 2    </script></body>

既然返回的是类数组,则可以转化为数组

Array.prototype.slice.call(arr);// ES6Array.from(arr);

浏览器情况
这里写图片描述


classList

这Element.classList是一个只读属性,它返回DOMTokenList元素的类属性的实时集合。element.classList本身是只读的,尽管您可以使用 add() and remove()方法进行修改。

  • 方法

    • add(String [,String])。添加指定的类值。如果这些类已经存在于元素的属性中,那么它们将被忽略。
    • remove(String [,String])。删除指定的类值。
    • toggle(String [,force])。当只有一个参数存在时:切换类值; 即,如果它是类存在,那么删除它并返回false,如果没有,那么添加它并返回true。当存在第二个参数时:如果第二个参数的值为true,则添加指定的类值,如果它的值为false,则将其删除。
    • contains(String)。检查元素的class属性中是否存在指定的类值。
  • 实例,看到这些用法,不得不再次想到JQuery,太像了

<body style="border: solid green 3px">    <div class="foo bar">        <p>Some div1 text</p>        <p>Some div1 text</p>        <p>Some div1 text</p>    </div>    <script>    div.classList.remove("foo");    div.classList.add("anotherclass");    // if visible is set remove it, otherwise add it    div.classList.toggle("visible");    // add/remove visible, depending on test conditional, i less than 10    div.classList.toggle("visible", i < 10);    alert(div.classList.contains("foo"));    // add or remove multiple classes    div.classList.add("foo", "bar");    div.classList.remove("foo", "bar");    </script></body>
  • 浏览器情况
    这里写图片描述
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝开空调冻的流鼻涕打喷嚏怎么办 狼人杀带耳机麦没声音怎么办 王者荣耀边境突围使刘邦大招怎么办 如果有个恶毒又有心机的后妈怎么办 qq炫舞的好忘了怎么办 百度网盘别人发我一个链接我怎么办 感觉地下和墙壁里有蚂蚁怎么办? 射像头监控摄像头家用卡满了怎么办 微乐贵阳捉鸡麻将不显示头像怎么办 苹果6p用久了卡怎么办 小猪民宿平台限制三天上线怎么办 交易猫买家申请了仲裁我的钱怎么办 雷达石英手表表里面有小灰尘怎么办 电脑宽带用户名和密码忘记了怎么办 腾讯会员不让别人在异地登录怎么办 中毒后电脑文件后缀是lnk怎么办 wps逗号隔的空不一样大怎么办 电脑盘里的文件删不了怎么办 在淘宝买的qq账号被找回了怎么办 微信公众号的密码忘了怎么办 公众号安全助手密码忘了怎么办 微博账号存在发布违规信息怎么办 余额宝转出到银行卡被冻结怎么办 银行账户被冻结被转出钱怎么办 从余额宝转出的资金被冻结怎么办 微信账号卖了但是实名认证了怎么办 uc下载文档里的文档全没了怎么办 二手乐视没有账号和密码怎么办 华为账号密码忘了手机卡丢了怎么办 联想平板微信更新后不可兼容怎么办 小米手机刷完机账号密码忘了怎么办 红米手机的小米账号密码忘了怎么办 小米手机账号密码手机号忘了怎么办 小米手机忘了账号和密码怎么办 自己的小米账号密码忘了怎么办 小米手机丢了不记得小米账号怎么办 小米手环账号密码忘了怎么办 阴阳师一个区的账号找不到了怎么办 阴阳师手机账号代练登录了后怎么办 我的微信账号被盗更改密码了怎么办 vivo手机密保密码忘了怎么办