快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

体育投注十大平台_酒文化网进入



在 Web 利用法度榜样开拓中,JavaScript 的利用越来越普遍,越来越繁杂,一个 Web 页面中每每有成百上千个 HTML 元素,准确、高效地选择所需的元素并对其进行操作,不仅可以在法度榜样开拓阶段节省编码光阴,低落法度榜样掉足的概率,在运行还能前进法度榜样运行效率,供给更好的用户体验。Dojo 供给了功能强大年夜的 Query 函数库,应用一个高效的查询引擎,能够根据元素 id,名称,CSS,属性及其组合对页面的元素进行查询,并且能够对返回结果进行异常方便的处置惩罚。本文具体先容 dojo.query 的各类查询要领,以及常用对结果的处置惩罚要领。恰当应用 dojo.query 能够大年夜大年夜前进法度榜样开拓的效率,削减代码量,前进编码质量。

在 Web 开拓中,我们常常必要根据必然的前提查询并获取某些 HTML 元素的引用,然后对这些元素进行操作以改变它们的属性、外不雅等。在标准的 JavaScript 说话中,可以经由过程 document.getElementById, document.getElementsByTagName, document.getElementsByClassName 等函数对 DOM 树进行查询,然后遍历返回结果分手进行处置惩罚。在一些繁杂的环境下,比如要查询 id 为“id1”的 div 元素下所有 class 为“class1”并且包孕属性“att1”的元素,应用标准的 JavaScript 查询就显得力不从心,纵然能够实现其代码也显得纷纷冗长。另一方面,在获得查询结果今后,要是要将所有返回的元素的 class 设置为“class2”,则必要遍历结果数组,逐一进行设置。应用 JavaScript 标准的查询要领功能有限,应用繁杂,而且当页面元素过多时还会导致机能低落。

Dojo Query 库供给了一种简洁而强大年夜的查询语法,以及对返回结果简便的处置惩罚要领。Dojo Query 库的核心是一个 dojo.query 函数,该函数接管一个查询字符串,以及一个可选的 DOM 节点作为参数,返回一个 NodeList 工具。一方面我们可以经由过程 id,元素名称,属性,CSS 等及其组合设置精美的查询字符串准确节制返回的结果,另一方面返回的 NodeList 工具供给了富厚的操作接口,对其调用的很多措施(如 addClass)都可以直接感化于所有的元素,并且支持链式调用。如下面的例子:

dojo.query("div.someClassName").style("backgroundColor","gray").forEach("item.disabled= true;");

首先在 DOM 根结点查询 class 为“someClassName”的 div 元素,对付返回的所有元素,将 style 属性“backgroundColor”设置为“gray”,然后将元素的“disabled”属性设置为“true”。应用 Dojo Query 能够正确地节制查询结果并方便地对所有结果进行操作,其应用异常简便,代码精粹,可读性强。本文后续章节将具体先容查询语法及常见应用处景,以及 NodeList 工具的应用。

当我们采纳 Dojo Query 进行查询时,平日应用最多的便是根据 HTML 元素的 tag 名称,或是 class 以及 id 属性来进行查询。这也是我们在引用 CSS 元素进行选择时常用的几种要领。比如,假设我们想查询页面内所有的标签,那么不妨可以这么写:

dojo.query("img");

此处,img 即为标署名称,因为 Dojo Query 并纰谬大年夜小写进行区分,故而形如这样的 HTML 元素也会被包孕在查询结果之中。上述语法的履行效果,等价于在 JavaScript 中调用 DOM API:document.getElementsByTagName("IMG")。

同样,根据 class 和 id 属性进行查询的语法,也很简单。例如,下面的例子实现的是在当前页面中查询 id 为 widget123 的元素:

dojo.query("#widget123");

其履行效果,等价于调用 document.getElementById("widget123");,或者,使用 Dojo 供给的 API,则相称于 dojo.byId("widget123")。

针对 class 属性的查询同样的简单直不雅,例如,下面的例子是查找所有 class 名称为“offToSeeTheWij”的 HTML 元素:

dojo.query(".offToSeeTheWij");

此处我们可以看到,同样的功能,假如用 DOM API 来实现,则将会变得异常冗长乏味:

var list = [];

var nodes = document.getElementsByTagName("*");

for(var x = 0; x

在上述代码中,我们必要对页面中的所有节点进行遍历,一一判断其 className 属性是否满意匹配前提才行。经由过程这个范例的例子,我们可以清楚地看到,应用 Dojo Query 在 DOM 节点查询方面具有异常显明的上风。

事实上,应用 Dojo Query 不仅在表达查询前提的简洁性上会更具上风,比拟于直接使用 DOM API 进行处置惩罚的要领,其履行速率也平日会加倍的快。接下来读者便会看到,这一点尤其在我们必要查询相对繁杂的页面节点关系时,会变得更为凸起。

除了上述我们看到的,Dojo Query 供给了基础的依据 tag、class、id 进行查询的要领以外,它还供给了许多更为繁杂的查询语法,而所有这些语轨则都遵照于 CSS 规范。Dojo Query 的这一做法十分的明智,由于 CSS 是已经被大年夜家所广泛应用和吸收了的一种 Web 技巧,其对 HTML 页面元素进行选择性修饰的要领,兼具语法简洁和功能强大年夜的特征,今朝所有的主流浏览器都对 CSS 有很好的支持。Dojo Query 沿用了 CSS 的语法,使得应用者无需进修一整套新的查询语法,便可以很好的掌握 Dojo Query 的应用,以完成各类繁杂的查询功能。

今朝,Dojo Query 支持许多常见的 CSS 选择器语法。例如,我们可以使用较为繁杂的类选择器语法,实现对相符指定 class 属性的指定元素进行查询:

dojo.query("div.someClassName");

又比如,我们可以将对各 tag 名称结合起来实现组合查询,下面完成的等于查询出所有的 h1,h2,h3 节点:

dojo.query("h1,h2,h3");

除此以外,Dojo Query 还支持某些特殊的在 CSS 3 中定义的选择器。我们可以在查询前提中引用某些特殊的伪类选择符,比如可以使用 nth-child 来查询 tbody 节点下所有奇数序号的子元素:

dojo.query("tbody tr:nth-child(odd)");

使用 first-child 来查询随意率性节点下体育投注十大平台的首个 p 子元素:

dojo.query("p:first-child");

还可以使用诸如“^=”、“$=”、“*=”这样的属性选择器,实现匹配特定字符串前提的查询。例如,下列代码便是分手用来查询 name 属性的取值以“item”打头,以“item”结尾,和包孕“item”字样的元素的:

dojo.query("[nam体育投注十大平台e^=item]");

dojo.query("[name$=item]");

dojo.query("[name*=item]");

上面我们看到的有关于 Dojo Query 的例子都只吸收一个参数,它们实现的是在全局范围内,即全部页面范围内,对节点进行查询。Dojo Query 还支持局部范围内的相对查询。此时,除了查询表达式外,我们必要传入另一个参数,用以唆使查询肇真个根节点。该参数可所以一个字符串,Dojo Query 会将其视作元素的 id 值;或者我们也可以传入一个 DOM 节点。鄙人面的例子里,我们实现了在 thisForm 这个节点下进行查询的功能:

经由过程以上章节的先容,我们知道,Dojo Query 返回的结果是 NodeList 工具。NodeList 是一个扩展的 Array 工具,它供给了富厚的操作接口措施。基础而言,NodeList 供给了险些所有操作 DOM 的措施,且简单易用;由于它本身是 Array 工具,以是它支持体育投注十大平台所有的 Dojo 对数组的操作措施;同时,它也供给了很多直接处置惩罚事故的措施。而且,NodeList 还有一个显明的优点,便是很多措施支持链式调用。所谓链式调用,是指 NodeList 的措施调用之后仍会返回当前的工具,可以经由过程“.”级联继承利用其他的操作,例如 :

dojo.query(".thinger ").style {border :"1px" }).removeClass("thinger").addClass("thinger2");

我们先来看一下 NodeList 的基础操作。

作为 Array 工具,NodeList 具有长度属性,而且可以经由过程 at,forEache,push,pop 这些措施来操纵它。必要留意的是 at,map,forEach,slice,splice,contact 等都可以进行链式调用,然则 push,pop,shift 和 uns体育投注十大平台hift 则是弗成以的。请参看以下代码片段:

var l = dojo.query(".thinger");

console.log("Size of items with class thinger:"+l.length);

//NodeList 中加入工具

l.push(dojo.create('div', { innerHTML:'hi' }));

console.log("Size of items with class thinger:" + l.length);

l.push(dojo.byId("foo"));

console.log("Size of items with class thinger:" + l.length);

// 查询 id 为 foo 的元素在 NodeList 中的位置

console.log( l.indexOf(dojo.byId("foo")) );

// 获取第四个元素

var node = l[3];

// 经由过程 at 措施,一次找出第二和第四个元素,返回结果也是一个 NodeList。

var newList = l.at(1, 3);

在应用 NodeList 的历程中,假如大年夜家细心的话,大概会留意到,NodeList 在封装 dojo.* 措施的同时,经由过程自描述(self-descriptive)要领省略掉落了第一个参数,这也是相符我们应用习气的。例如 NodeList 的 forEach 措施,其用法看起来很像 dojo.forEach(Array,Function)。不过第一个参数被隐式供给了,即将 NodeList 工具本身作为 Array 参数的值。

下面这个例子阐明若何在

内添加内容。

dojo.query("div").forEach(function(node, index, array){

node.innerHTML = "new version content!";

});

留意,经由过程自描述省略第一个参数的观点贯穿所有 NodeList 的 API。下面先容的 NodeList 的常用措施,也适用上面的观点。

dojo.style 是一个利用于单个 node 的 API,这个 API 对应到 NodeList API,等价于隐式省去 node 参数,然后将其利用体育投注十大平台于 NodeList 中的每一个元素。

// 履行查询

var borders = dojo.query(".thinger").style("border");

// 设置新值

dojo.query(".thinger").style("border", "1px solid black");

// 删除,添加 class

dojo.query(".thinger").style({border :" 3px solid red" }).removeClass("thinger").

addClass("thinger2");

上面的代码段是一个 NodeList API 进行级联调用的例子。大年夜部分 DOM 相关的工具都如上述例子一样,返回 NodeList,然后我们可以对其进行链式调用。但并非所有的 API 都可以级联,NodeList.coords 便是一个例外,它返回的是一组相符前提的坐标值,是以是弗成以级联的。

var nl = dojo.query(".foo");

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: