新增的querySelector、querySelectorAll测试

从IE9开始DOM开始支持支持CSS的选择器了,DOM提供了两个接口querySelector得到一个DOMquerySelectorAll得到一组DOM一个个的解释这些选择器也没有必要,我

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

从IE9开始DOM开始支持支持CSS的选择器了,DOM提供了两个接口

querySelector 得到一个DOM

querySelectorAll 得到一组DOM

一个个的解释这些选择器也没有必要,我们结合前面的数组知识,写一段代码来说明。页面上有一组元素,然后会依据我们数组中的预订选择值选择相应元素,并将背景变红色,同时提示选择器的含义。这样的代码便于运行理解和扩展。

html的结构部分

<body>  
    <div>  
        <input type="button" value="开始测试" />  
        <span></span><span></span>  
    </div>  
    <ol>  
        <li title="abc1">  
            <h2 title="abc">  
                Hello</h2>  
        </li>  
        <li title="abc2">  
            <input type="checkbox" checked="checked" />  
            <input type="checkbox" />  
            <input type="checkbox" />  
        </li>  
        <li title="abc3"></li>  
        <li title="abc4">  
            <ul>  
                <li title="41abc">  
                    <input type="text" readonly="true" />  
                    <input type="text" />  
                </li>  
                <li title="42abc">  
                    <input type="button" value="disabled" disabled="disabled" />  
                </li>  
                <li title="43abc4"></li>  
                <li title="44abc4">  
                    <input type="radio" checked="checked" />  
                    <input type="radio" />  
                    <input type="radio" checked="checked" />  
                </li>  
            </ul>  
        </li>  
        <li title="abc5"></li>  
        <li title="abc6"></li>  
        <li title="abc7"></li>  
        <li title="abc8"><a href="#">go</a></li>  
        <li title="abc9"></li>  
    </ol>  
    <p>  
        text</p>  
<a href="http://hovertree.com/">何问起</a>
</body>  

添加一个简单的样式

<style>  
    .box  
    {  
        background-color: Red;  
    }  
</style>  
<!-- hovertree.com -->

加一个jQuery的脚本

<script src=“http://down.hovertree.com/jquery/jquery-1.12.3.min.js” type=“text/javascript”></script

然后就是我们的测试代码了

<script type="text/javascript">  
  
    var tip = ["指定元素名称", "属性中包含", "属性开始", "属性结束", "属性等于",  
            "html部分", "元素内容为空白", "",  
            "子元素", "兄弟元素", "第一个", "最后一个元素", "第2个", "倒数第2个",  
            "奇数", "偶数", "类型一致的奇数", "类型一致的偶数",  
            "从第3个算起,   每隔2个(包含第2个)", "只有一个子元素",  
            "可用状态", "不可用状态", "只读", "非只读", "选取状", "非选取状态", "一半状态", "不包含"  
            ];  
  
    var selectors = ["ol",  
                    "[title*=abc]", "[title^=abc]", "[title$=abc]", "[title=abc]",  
                    ":root",  
                    ":empty",  
                    ":target",  
                    "ol li",  
                    "ol~p",  
                    "ol li:first-child", "ol li:last-child", "ol li:nth-child(2)", "ol li:nth-last-child(2)",  
                    "ol li:nth-child(odd)", "ol li:nth-child(even)", "ol li:nth-of-type(odd)", "ol li:nth-of-type(even)",  
                    "li:nth-child(2n+3)",  
                    "ol li:only-child",  
                    ":enabled", ":disabled", ":read-only", ":read-write",  
                    ":default", ":checked", ":indeterminate",  
                    "ol li:not(:first-child)"  
                    ];  
  
  
    $(  
    function() {  
        $(":button").click(  
        function() {  
            selectors.forEach(  
            function(item, index) {  
                //把上次有box样式的元素清空下  
                Array.prototype.slice.call(document.querySelectorAll(".box")).forEach(  
                function(e, i) {  
                    e.className = "";  
                }  
                );  
                //本次匹配的元素加入样式   hovertree.com
                Array.prototype.slice.call(document.querySelectorAll(item)).forEach(  
                function(e, i) {  
                    e.className = "box";  
                }  
                );  
                $("span:eq(0)").html(item);  
                $("span:eq(1)").html(tip[index]);  
                alert("next");  
            }  
            );  
        }  
        );  
    }  
    );  
</script>  

我们准备了两个数组,一个存放选择器,一个存放选择器的说明。对selectors数组多forEach便利,根据选择器对元素进行添加样式,以可以看到样式结果。

 

需要说明下的是

document.querySelectorAll(“.box”)得到的不是数组,是nodelist,虽然可以类似数组的for,但真的不是数组,不能直接对其使用数组的方法forEach,如果我们需要转换为数组,我们可以用Array.prototype.slice.call来辅助就可以了。

更多特效:http://www.cnblogs.com/roucheng/p/texiao.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120608.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java递归查询数据库数据[通俗易懂]

    java递归查询数据库数据[通俗易懂]先查询第一层的数据,然后调用递归循环第一层的数据,查询父Id等于第一层的Id,执行完成后第一层一下的所有数据就全部查询出来了。。。publicList&lt;Information&gt;getTreeList(IntegertopId){ Stringhql="fromInformationwhereisDelete=2andid="+topId; List&l…

    2022年9月15日
    0
  • 跨平台数据整合系统_lvc异构系统

    跨平台数据整合系统_lvc异构系统1.muleESB整合系统四种模式A.简单服务模式属于几个webService之间的同步调用,请求响应处理模式。B.桥接模式C.校验器模式校验器模式通过定义一个校验过滤器过滤服务请求,并同步返回

    2022年8月2日
    6
  • 数字证书简介_全域数字证书

    数字证书简介_全域数字证书数字证书,一种集合了多种加密方式的安全标准,数字证书通常由受到人们广泛信赖的组织向第三方颁发,表明这个第三方也是一个值得信赖的对象。

    2022年10月1日
    0
  • 2020年3月23日阿里笔试题[通俗易懂]

    2020年3月23日阿里笔试题[通俗易懂]2020年3月23日阿里笔试题题目描述题目分析  这是阿里的第二场笔试,本来觉得没啥好写的,一道排列组合,一道迷宫。没有什么发挥的空间。但是后来在和大家讨论的过程中,把这道题的公司给敲出来了,但是这公式也不能白敲,干脆写一篇文章总结一下。题目描述一共n个人,从中选出任意个人组成一队,我们不妨记为k,再从k个人选出一人做队长。题目分析  这是一个典型的排列组合问题,从n个人选出k个,可…

    2022年5月22日
    26
  • MATLAB画图——基础篇「建议收藏」

    MATLAB画图——基础篇「建议收藏」MATLAB画图——基础篇在MATLAB使用的过程中,学会画图是一项必要的技能。在这里,我总结了部分简单的画图函数,同时附上代码(本文中的程序为了方便给出的数据都很简单,大家可以自己去尝试其他数据)。这对刚刚开始接触MATLAB的小白来说,我认为还是很有帮助的。文章目录一、plot()函数1.二维图形(1)绘图选项(2)图形的辅助标注和窗口的分割(3)格式2.三维图形(1)格式(2)网格矩阵生成函数:meshgrid(3)mesh函数(4)surf函数二、特殊图形1.对数坐标图2.极坐标图3.条形图一

    2022年9月20日
    0
  • 死锁的四个必要条件和解决办法_半暖的博客_活锁和死锁的概念

    死锁的四个必要条件和解决办法_半暖的博客_活锁和死锁的概念死锁概念及产生原理   概念:多个并发进程因争夺系统资源而产生相互等待的现象。   原理:当一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁。   本质原因:     1)、系统资源有限。     2)、进程推进顺序不合理。死锁产生的4个必要条件  1、互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程…

    2022年4月20日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号