从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

新增的querySelector、querySelectorAll测试的更多相关文章

  1. HTML5中DOM元素的querySelector/querySelectorAll的工作机制

    在HTML5中,提供了强大的DOM元素选择API querySelector/querySelectorAll,允许使用JavaScript代码来完成类似CSS选择器的DOM元素选择功能.通常情况下, ...

  2. javascript DOM操作之 querySelector,querySelectorAll

    javascript DOM操作之 querySelector,querySelectorAll

  3. 两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)

    本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款 ...

  4. html5 新选择器 querySelector querySelectorAll

    querySelector 返回满足条件的单个元素 使用实例 HTML <div id="main">主体布局</div> JS var main =doc ...

  5. Fundebug前端JavaScript插件更新至1.6.0,新增test()方法用于测试

    摘要: 1.6.0新增fundebug.test()方法用于测试,请大家及时更新. 默认情况下,Fundebug 插件能够自动捕获未处理的错误(uncaught error).另外,开发者也可以通过使 ...

  6. CSS选择器比较:queryselector queryselectorall

    官网解释: querySelector() and querySelectorAll() are two JavaScript functions very useful when working w ...

  7. querySelector/querySelectorAll

    querySelector获取页面I属性D为test的元素: document.getElementById("test"); //or document.querySelecto ...

  8. (getElementBy**)与 querySelector(querySelectorAll) 的区别

    1. 通过类似于 document.getElementByTagName('div') 这种方式获取到的类数组,无法通过 forEach 进行遍历(可以通过for循环):而通过document.qu ...

  9. 重要选择器querySelector和querySelectorAll

    他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素. 目前几乎主流浏览器均支持了他们.包括 IE8(含) 以上版本. Firefox. Chrome.Safari.Opera. queryS ...

随机推荐

  1. ooofc.com域名备案问题导致无法正常访问临时解决方案

    各位尊敬的easyradius用户: 由于临时收到ooofc.coom域名备案被删除的消息,之后ooofc.com就无法访问.导致用户无法访问控制台oa.ooofc.com,及用户中心user.ooo ...

  2. Servlet3.0学习总结——基于Servlet3.0的文件上传

    Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...

  3. struts2:struts.xml配置文件详解

    1. 几个重要的元素 1.1 package元素 package元素用来配置包.在Struts2框架中,包是一个独立的单位,通过name属性来唯一标识包.还可以通过extends属性让一个包继承另一个 ...

  4. 笔记《Hbase 权威指南》

    为什么要用Hbase- Hbase的诞生是因为现有的关系型数据库已经无法在硬件上满足疯狂增长的数据了,而且因为需要实时的数据提取Memcached也无法满足- Hbase适合于无结构或半结构化数据,适 ...

  5. Selenium WebDriver屏幕截图(C#版)

    Selenium WebDriver屏幕截图(C#版)http://www.automationqa.com/forum.php?mod=viewthread&tid=3595&fro ...

  6. php读取csv文件,在linux上出现中文读取不到的情况 解决方法

    今,php读取csv文件,在linux上出现中文读取不到的情况,google,后找到解决办法<?phpsetlocale(LC_ALL, 'zh_CN');$row = 1;$handle = ...

  7. js类(继承)(二)

    1. 定义js类 js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Sh ...

  8. mmo设计

    基于多人格斗系统设计. 总体 1.放技能/使用道具,行走,公告,聊天 共性: A.服务端代理推送 B.管道内推送 2.玩家信息(统一玩家信息查看,去除每个模块自己实现) 3.怪物掉落(统一掉落控制.领 ...

  9. 协作图 Collaboration diagram

    概述 协作图也是一种交互图,但一般用的比较少,一般用在大概分析一下对象之间是怎样交互的,跟顺序图是可以相互转化的. 协作图的用处: 在分析的时候(而顺序图一般设计的时候),分析出有哪些对象: 在白板上 ...

  10. Android Studio NDK 学习之接受Java传入的字符串

    本博客是基于Android Studio 1.3 preview版本,且默认你已经安装了Android SDK, Android NDK. 用Android Studio新建一个工程叫Prompt,其 ...