如何在javascript中获取dom对象

JavaScript032

如何在javascript中获取dom对象,第1张

js中有四种获取dom的方法:

根据ID获取对象:document.getElementById(ID)

根据class获取对象数组:document.getElementsByClassName("box")

根据tag获取对象数组:document.getElementsByTagName("p")

根据name获取对象数组:document.getElementsByName(NAME)

用jquery选择器就多得去了,一般都用jquery,js一大串代码用jquery几个符号搞定。

根据ID获取对象:$('#ID')

根据class获取对象数组:$(".box")

根据tag获取对象数组:$("p")

根据name获取对象数组:$('input[name="nw"]')

1、直接判断对象不为nullif (!myObj) { var myObj = { }}Javascript语言是"先解析,后运行",解析时就已经完成了变量声明2、使用window对象判断某对象是否存在if (!window.myObj) {var myObj = { }}3、使用this对象判断某对象是否存在if (!this.myObj) {  this.myObj = { }}在某些运行环境中(比如V8、Rhino),window未必是顶层对象。所以,考虑改成this进行判断,在全局变量的层面中,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。4、方法三这样写可读性较差,而且this的指向是可变的,容易出错,所以进一步改写:var global = thisif (!global.myObj) { global.myObj = { }}5、可以使用typeof运算符,判断myObj是否有定义。if (typeof myObj == "undefined") { var myObj = { }}这是目前使用最广泛的判断javascript对象是否存在的方法。6、由于在已定义、但未赋值的情况下,myObj的值直接等于undefined,所以上面的写法可以简化:if (myObj == undefined) {  var myObj = { }}有两个地方需要注意,首先第二行的var关键字不能少,否则会出现ReferenceError错误,其次undefined不能加单引号或双引号,因为比较的是undefined这种数据类型,而不是"undefined"这个字符串。7、用精确比较===判断对象是否存在if (myObj === undefined) { var myObj = { }}8、根据javascript的语言设计,undefined == null,所以比较myObj是否等于null,也能得到正确结果if (myObj == null) { var myObj = { }}不过,虽然运行结果正确,但是从语义上看,这种判断方法是错的,应该避免。因为null指的是已经赋值为null的空对象,即这个对象实际上是有值的,而undefined指的是不存在或没有赋值的对象。因此,这里只能使用"比较运算符"(==),如果这里使用"精确比较运算符"(===),就会出错9、还可以使用in运算符,判断myObj是否为顶层对象的一个属性if (!('myObj' in window)) {  window.myObj = { }}10、使用hasOwnProperty方法,判断myObj是否为顶层对象的一个属性if (!this.hasOwnProperty('myObj')) { this.myObj = { }}总结:1、如果只判断对象是否存在,推荐使用第五种写法。2、如果除了对象是否存在,还要判断对象是否有null值,推荐使用第一种写法。3、除非特殊情况,所有变量都应该使用var命令声明。4、为了跨平台,建议避免使用window表示顶层对象。5、在Javascript语言中,null和undefined容易产生混淆。在可能同时涉及两者的情况下,建议使用"精确比较"运算符(===)。

1.document.getElementById("id名")

通过id属性的值查找,返回满足条件的第一个元素

2.document.getElementsByTagName("标签名")

通过标签名来获取页面中的元素。返回的是多个标签。

并不是真正的数组,但是我们可以想操作数组一样操作他(类数组)

3.document.getElementsByClassName("class名")

通过类名来获取页面中的元素。返回的也是多个标签

4.document.getElementsByName("表单元素name")

通过表单的name属性的值来获取元素

5.document.querySelector("div p a")

匹配指定 CSS 选择器的 第一个元素 。 如果没有找到,返回 null。

6.document.querySelectorAll("div")

获取所有满足条件的元素

7.三个特殊节点

8.childNodes 所有节点。包括各种节点

9.fristChild 获取一个元素的第一个子节点

10.lastChild 获取一个元素的最后一个子节点

11.parentNode 获取一个元素的父节点

12.previousSibling 获取一个元素的上一个兄弟节点

13.nextSibling 获取一个元素的下一个节点

14.children 只获取子元素

15.firstElementChild 获取第一个元素子节点

16.lastElementChild 获取最后一个元素子节点

17.nextElementsibling 获取下一个元素兄弟节点

18.previousElementsibling 获取上一个元素兄弟节点

19.parentElement 获取父元素节点

20.childElementCount 获取子元素的个数

1.document.createElement(元素名) 创建一个元素节点

2.document.createTextNode("这是新创建的一段文本") 创建一个文本节点

3.appendChild() 添加元素到容器中

4.insertBefore() 在一个节点前插入新节点

5.removeChild() 删除子节点

6.replaceChild() 替换子节点

7.cloneNode() 克隆节点 传入true则复制所有节点

8.setAttribute() 给元素设置属性

参数1:属性的名

参数2:属性的值

如果属性不存在,则添加;存在,则修改

9.romveAttribute() 删除属性

参数:要删除的属性名

10.getAttribute() 获取属性的值

参数:属性名

11.访问 元素 id 名

box.id

12.访问 元素 class 名

box.className

box.classList 类数组

13.获取标签名

box.tagName

box.nodeName

14.innerHTML属性

innerHTML 属性设置或返回标签的开始和结束标签之间的 HTML。

值为为文本

15.innerText属性

16.outerHTML

跟innerHTML相比多包括了一个它自身

1.访问行内(内联)样式表

2.内部样式表和外部样式表的获取

getComputedStyle()

参数1:表示样式表所属的元素

参数2:如果获取的是伪元素的样式,传入伪元素,正常元素传入null 或不传

兼容性问题

3.获取元素实际的宽高

offsetWidth 宽

offsetHeight 高

4.获取元素参考父容器的left 和 top

offsetLeft 距离左部

offsetTop 距离上部

offsetParent 查找这个元素的参照父容器