第一个函数是通过元素的 id 属性选择元素,其 id 属性是独一无二的,不能将2个元素设置相同的 id ,因此第一个函数返回的结果只有一个元素;
第二个函数通过元素的“标签名”选择元素,正如一个 HTML 文档中,可能包含多个 div 元素,a 元素等等,这能够选择所有标签名称相同的元素(从其名称中的 Elements 即可看出,相反,通过 id 选择的函数,其名称中的 Element 后面没有 s),因此它返回的结果是多个拥有相同标签名的元素集合,在实际的开发编程中,通常使用一个 Javascript 变量来保存这些元素,然后通过 C 数组风格的语法来访问单独的元素;
第三个函数通过元素的“类名”选择元素,元素的标签名是 HTML 规范定义的,而且构建 DOM 树时依赖于标签名;相反,类名作为元素可选属性的一部分,需要用户定义,且构建 DOM 树时一般不依赖于类名。
类名能够将 HTML 文档中,各种标签相同的和标签不同的元素划分成同一类,然后通过第三个函数就能引用这些元素,因此它返回的同样是元素集合,需要通过数组进行访问,而且经常在一个 for 循环中遍历每个元素,设置每个元素的其余属性;
类名也经常用作为 CSS 的类选择符,为相同类名的元素应用同一种样式;
最后,书写代码时需要注意 Element 单词的形式,少了 s 或多了 s ,浏览器和开发工具都会报错的。
以上代码第11~15行的 for 循环首先创建 span 元素,然后将其作为 id 为 SpanElementTest 的 div 元素的子元素添加,并且设置 span 元素内部的“文本节点”,如此过程重复2000次,最终结果就是该 HTML 文档页面中包含了2000个span元素,其内部的文本节点从 span0~span1999。
首先第10行通过 id 选择元素,由于代码执行到此处时,页面中不存在 id 为 debuglog 的元素,因此 log 变量为 null,导致执行第11~16行的 if 语句块的内容:创建 div 元素,将其 id 属性的值设置为 debuglog (既可以通过 HTML 元素语法的 id 属性设置,也可以像这里一样通过 javascrip 变量对象来设置 id 属性),然后在 div 元素内部添加 h2 元素及其文本节点,最后将“组装”好的 div 元素作为 body 元素的子元素添加(改变了页面布局和结构);
第17~20行再次通过 Javascript 动态组装元素并添加至页面 DOM 树中:
第17行创建 pre 元素,第18行以调用该函数传递的字符串参数为内容来创建文本节点(document.createTextNode() 接收传递进来的字符串作为参数);
第19行将上述文本节点添加至 pre 元素内部;第20行将 pre 元素添加至 div 元素内部。代码执行至此,通过 Javascript ,整个页面文档体的结构已经变成如下所示(不考虑 script 标签):
var start = new Date;
setTimeout(function(){
var end = new Date;
console.log('Time elapsed:', end - start, 'ms');
}, 500);
while (new Date - start < 1000) {};
var start = new Date;
setTimeout(function(){
var end = new Date;
console.log(&#39;Time elapsed:&#39;, end - start, &#39;ms&#39;);
}, 500);
while (new Date - start < 1000) {};
var JSON_object = {
name: "shayi1983",
long: "173cm",
borth: "chongqing",
showPresonal_ID: function(){
console.log("Hi, " + "my name is " + JSON_object.name + ",I long is " + JSON_object.long + " I come from " + JSON_object.borth);
}
}
JSON_object.showPresonal_ID();