当前位置: 首页 > news >正文

网站建设框架怎么做/收录好的网站

网站建设框架怎么做,收录好的网站,月夜直播免费看,手机wap网站建设解决方案随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) from:http://blog.csdn.net/z742182637/article/details/51655690 在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头…

随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

from:http://blog.csdn.net/z742182637/article/details/51655690

在传统的 JavaScript 开发中,查找 DOM 往往是开发人员遇到的第一个头疼的问题,原生的 JavaScript 所提供的 DOM 选择方法并不多,仅仅局限于通过 tag, name, id 等方式来查找,这显然是远远不够的,如果想要进行更为精确的选择不得不使用看起来非常繁琐的正则表达式,或者使用某个库。事实上,现在所有的浏览器厂商都提供了 querySelector 和 querySelectorAll 这两个方法的支持,甚至就连微软也派出了 IE 8 作为支持这一特性的代表,querySelector 和 querySelectorAll 作为查找 DOM 的又一途径,极大地方便了开发者,使用它们,你可以像使用 CSS 选择器一样快速地查找到你需要的节点。

querySelector

querySelector 和 querySelectorAll 的使用非常的简单,就像标题说到的一样,它和 CSS 的写法完全一样,对于前端开发人员来说,这是难度几乎为零的一次学习。假如我们有一个 id 为 test 的 DIV,为了获取到这个元素,你也许会像下面这样:

document.getElementById("test");
  • 1

现在我们来试试使用新方法来获取这个 DIV:

document.querySelector("#test");
document.querySelectorAll("#test")[0];
  • 1
  • 2

获取文档中 class=”example” 的第一个 <p> 元素:

document.querySelector("p.example");
  • 1

获取文档中有 “target” 属性的第一个 <a> 元素:

document.querySelector("a[target]");
  • 1

假定你选择了两个选择器: <h2> 和 <h3> 元素。 
以下代码将为文档的第一个 <h2> 元素添加背景颜色:

<h2>A h2 element</h2>
<h3>A h3 element</h3>document.querySelector("h2, h3").style.backgroundColor = "red";//返回h2或者h3的首个元素
  • 1
  • 2
  • 3
  • 4

但是,如果文档中 <h3> 元素位于 <h2> 元素之前,<h3> 元素将会被设置指定的背景颜色。

<h3>A h3 element</h3>
<h2>A h2 element</h2>document.querySelector("h2, h3").style.backgroundColor = "red";
  • 1
  • 2
  • 3
  • 4

使用这两个方法无法查找带伪类状态的元素,比如querySelector(':hover')不会得到预期结果。

querySelectorAll

该方法返回所有满足条件的元素,结果是个nodeList集合。查找规则与前面所述一样。

elements = document.querySelectorAll('div.foo');//返回所有带foo类样式的div
  • 1

但需要注意的是返回的nodeList集合中的元素是非实时(no-live)的,想要区别什么是实时非实时的返回结果,请看下例:

<div id="container"><div></div><div></div>
</div>
//首先选取页面中id为container的元素
container=document.getElementById('#container');
console.log(container.childNodes.length)//结果为2
//然后通过代码为其添加一个子元素
container.appendChild(document.createElement('div'));
//这个元素不但添加到页面了,这里的变量container也自动更新了
console.log(container.childNodes.length)//结果为3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

通过上面的例子就很好地理解了什么是会实时更新的元素。document.getElementById返回的便是实时结果,上面对其添加一个子元素后,再次获取所有子元素个数,已经由原来的2个更新为3个(这里不考虑有些浏览器比如Chrome会把空白也解析为一个子节点)。

感觉区别不大是吧,但如果是稍微复杂点的情况,原始的方法将变得非常麻烦,这时候 querySelector 和 querySelectorAll 的优势就发挥出来了。比如接下来这个例子,我们将在 document 中选取 class 为 test 的 div 的子元素 p 的第一个子元素,当然这很拗口,但是用本文的新方法来选择这个元素,比用言语来描述它还要简单。

document.querySelector("div.test>p:first-child");
document.querySelectorAll("div.test>p:first-child")[0];
  • 1
  • 2

我们使用 querySelectorAll 给所有 class 为 emphasis 的元素加粗显示。

var emphasisText = document.querySelectorAll(".emphasis");
for( var i = 0 , j = emphasisText.length ; i < j ; i++ ){emphasisText[i].style.fontWeight = "bold";
}
  • 1
  • 2
  • 3
  • 4

这是原生方法,比起jquery速度快

关于转义

我们知道反斜杠是用来转义用的,比如在字符串里我们想表示空字符就使用'\b',换行'\n'。同样,在提供给querySelector和querySelectorAll的参数也支持转义,了解这点非常重要。

先看个例子,比如我们有个div它的样式类为'foo:bar',当然我知道你一般不会这样写。当我们需要选择它的时候,就需要将其中的冒号进行转义,否则抛错。

<div class="foo:bar"></div>
  • 1

这里写图片描述

浏览器报怨表示不是一个合法的选择语句。

同时,有趣的事情来了,或许你以为将冒号直接转义就解决问题了。

这里写图片描述

同样,也表示非法。原因就在于反斜杠在字符串中本身就表示转义的意思,它于冒号结合转不出东西来,于是抛错。

所以正确的做法是将反斜杠转义后'.foo\:bar'再传递给querySelector,后者在接收到'.foo\:bar'这个参数后,字符串将两个反斜杠转义成一个,然后querySelector前面得到的一个反斜杠与冒号结合进行转义得到正确结果。

这里写图片描述

也就是说经历两次转义,一次是字符串当中,一次是querySelector解析参数时。

理解这点后,可以来看一个更有趣的例子了。比如我们要选择类名里面含反斜杠的元素。是的,我们需要一共使用四个反斜杠!才能正常工作。

<div class="foo\bar"></div>
  • 1

这里写图片描述

http://www.lbrq.cn/news/750619.html

相关文章:

  • 网站排名优化原理/网站查询域名解析
  • dreamweaver怎样用框架做网站/搜索引擎优化规则
  • 做网站的越来越少了/国家卫健委每日疫情报告
  • 有专门教做家具的网站/大数据查询个人信息
  • 平顶山网站建设费用/推广营销企业
  • 做基因互作的网站/网站seo检测工具
  • 卡盟网站建设/好消息疫情要结束了
  • 岚县网站建设/网络公司网络营销推广方案
  • 厂房设计装修公司/盛大游戏优化大师
  • 杭州网站建站/地推app接任务平台
  • 装修广告做哪个网站最好看/网销怎么做才能做好
  • 汕头建站平台/公众号营销
  • 有哪些做汽车变速箱的门户网站/百度一下官方入口
  • 广州软件开发公司排名/东莞seo网站制作报价
  • 专业做阿里巴巴网站的公司/网店怎么开
  • 乐山 网站建设/百度推广开户费
  • 做进口产品的网站/杭州seo培训
  • 怎么制作网站模板/如何自己开发一个平台
  • 模板做的网站不好优化/泰安seo公司
  • 长沙网站开发培训学校/百度的合作网站有哪些
  • 做网站时图片的分辨率是多少/怎么制作一个网站
  • 移动网站建设的前期规划内容/百度关键词排名突然下降很多
  • 专注外贸建站/上海seo优化公司kinglink
  • 浏阳做网站报价/站长之家站长工具综合查询
  • 蚌埠市重点工程建设管理局网站/营销app
  • 卡密网站怎么做/北京网站设计公司
  • 模板做图 网站有哪些内容/市场调研问卷调查怎么做
  • 网站开发跟app开发的差别/搜狗官网
  • 西湖区外贸网站建设/宁波优化关键词首页排名
  • 国外优质网站/长春关键词优化报价
  • 飞算AI 3.2.0实战评测:10分钟搭建企业级RBAC权限系统
  • Docker Compose 安装 Neo4j 的详细步骤
  • 文件快速复制工具,传输速度提升10倍
  • Go语言并发编程 ------ 临界区
  • Java基础面试题(3)—Java(String字符串的存储方式,字面量)
  • 北京JAVA基础面试30天打卡11