Dom编程艺术笔记

2017-07-11  本文已影响0人  zchuhyy

Dom是一种使用于多种环境和多种程序设计语言的通用性API。如果想Dom技巧运用在Web服务器以外的应用环境里,严格遵守“第1级Dom”能够让你避免与兼容性有关的任何问题

一些基础知识:

function Box(name, age) { //构造函数模式
this.name = name;
this.age = age;
this.run = function () {
return this.name + this.age + '运行中...';
};
}
var box1 = new Box('Lee', 100); //new Box()即可
var box2 = new Box('Jack', 200);
alert(box1.run());
alert(box1 instanceof Box); //很清晰的识别他从属于Box
这个方法看似像一个函数,但又有些不太一样。比如函数名一般都小写。如果学过其他面向对象的语言就会知道,这是类的写法(此处不多分析,非强制,但这么写有助于区分构造函数和
普通函数)。这种方法是构造函数创建对象的写法,通过构造函数创建对象,必须使用new 运算符。
构造函数可以创建对象执行的过程:
1)当使用了构造函数,并且new 构造函数(),那么就后台执行了new Object();
2)将构造函数的作用域给新对象,(即new Object()创建出的对象),而函数体内的this 就
代表new Object()出来的对象。
3)执行构造函数内的代码;
4)返回新对象(后台直接返回)。

注:

1)构造函数和普通函数的唯一区别,就是他们调用的方式不同。只不过,构造函数也是函数,必须用new 运算符来调用,否则就是普通函数。
2)this就是代表当前作用域对象的引用。如果在全局范围this 就代表window 对象,如果在构造函数体内,就代表当前的构造函数所声明的对象。

这种方法解决了函数识别问题,但消耗内存问题没有解决。同时又带来了一个新的问题,全局中的this 在对象调用的时候是Box 本身,而当作普通函数调用的时候,this 又代表window。即this作用域的问题。

第三章

可以通过getElementsById和getElementsByTagName结合起来运用。例如:如果想知道id属性值为purchase的元素包含着多少个子元素,必须通过一个更具体的对象去调用这个方法,如下所示---->
var shopping=document.getElementsById("purchase");
var items=shopping.getElemtentsByTagName("*");

第四章

解决方法:在onclick事件处理函数所触发的JavaScript代码里增加一条return false语句,就可以防止用户被带到目标链接窗口。例:

<a href="https://www.baidu.com" onclick="showPic(this);return false;">

<p id="description">Choose an image.</p> <script> var description = document.getElementById("description"); alert(description.nodeValue); </script>

注意一个细节:在这里用nodeValue属性获取description对象的值时,得到的并不是包含在这个段落里的文本。示例中输出的将是“null”。因为<p>元素本身的nodeValu是一个空值,而我们真正需要的是<p>元素所包含的文本的值。

包含在<p>元素里的文本是另一种节点,它是<p>元素的第一个子节点。因此想要得到的其实是它的第一个子节点的nodeValue属性值。所以应该是

alert(description.childNodes[0].nodeValue); 或alert(description.firstChild.nodeValue);

第五章:

  • 在网页加载完成时触发的事件,用window.onload=test();时出现了方法无法调用问题,把括号去掉之后问题就解决了。
    下面我们来分析一下原因:
    经过上网查资料和自己动手编写示例发现,window.onload=test();这种写法在程序运行到这句时,先执行test()函数,然后将test的返回值赋给window.onload,这样的赋值毫无意义
    window.onload=test;这种写法是在网页加载完成后,调用test()方法。

第七章

0表示未初始化
1表示正在加载
2表示加载完毕
3表示正在交互
4表示完成

第九章

第十章

上一篇下一篇

猜你喜欢

热点阅读