JavaScript操作DOM

简介:

根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:

  • 整个文档是一个文档节点

  • 每个 HTML 元素是元素节点

  • HTML 元素内的文本是文本节点

  • 每个 HTML 属性是属性节点

  • 注释是注释节点

wKiom1MITraDXRNaAADRpKV8Qqs424.jpg

1    getElementById()方法

   getElementById()查找具体某个标签元素,查询的是标签元素ID的属性。

1
var  element=document.getElementById( "element_id" );


2    getElementsByTagName()方法
   getElementsByTagName()查找一组标签,具有相同名称的标签元素。

1
var  element=document.getElementsByTagName( "p" );


3    getElementsByClassName()方法
   getElementsByClassName()查找带有相同类名的所有标签元素。

1
var  element=document.getElementsByTagName( "element_class" );


4    getElementsByName()方法
   getElementsByName():该方法与 getElementById() 方法相似,但是它查询元素的 name 属性,而不是 id 属性,返回的是元素数组。

1
var  element=document.getElementsByName( "myInput" );


5    createELement()方法
    createELement方法用来创建新的文档元素。

1
2
3
window.    var  p_tag=document.createElement( "p" );
    alert( "nodeName:" +p_tag.nodeName+ " nodeType:" +p_tag.nodeType);
}

   新节点已经存在了,想要节点插入到文档的节点树中,简单的方法便是让他成为某个文档节点树的子节点,可以使用appendChild方法


6    appendChild()方法
    appendChild方法用来向文档节点树中插入元素。

1
2
3
4
window.      var  p_tag=document.createElement( "p" );
      var  div_tag=document.getElementById( "test" );
      div_tag.appendChild(p_tag);
}


7    createTextNode()方法
   createTextNode方法用来创建文本节点,它的语法和createElement方法一样。同样,通过appendChild方法可将创建的文本节点插入到元素里成为元素的子节点。

1
2
3
4
5
6
window.      var  p_tag=document.createElement( "p" );   
      var  div_tag=document.getElementById( "test" );
      div_tag.appendChild(p_tag);
      var  text_tag=document.createTextNode( "hello,world" );
      p_tag.appendChild(text_tag);
}

元素的创建和插入的顺序可以不同,下面的仍旧可以得到相同的结果:

1
2
3
4
5
6
window.      var  p_tag=document.createElement( "p" );
      var  text_tag=document.createTextNode( "hello,world" );
      var  div_tag=document.getElementById( "test" );
      p_tag.appendChild(text_tag);
      div_tag.appendChild(p_tag);
}


8    insertBefore()方法
   appendChild() 方法将新元素作为父元素的最后一个子元素进行添加,当你不希望如此时,你可以使用insertBefore。

1
element.insertBefore(nodeName,childNodeName)


9    removeChild()方法
   removeChild方法用来删除文档节点树的元素,删除前必须要清楚该元素的父元素。

1
2
3
4
5
<script>
     var  parent=document.getElementById( "div1" );
     var  tag=document.getElementById( "p2" );
     parent.removeChild(tag);
</script>

   提示:能否在不引用父元素的情况下删除某个元素?

1
2
var  child=document.getElementById( "p1" );
child.parentNode.removeChild(child);


10    replaceChild()方法
   如需替换文档节点树的元素,可以使用 replaceChild() 方法。

1
2
3
4
5
6
7
8
<script>
     var  para=document.createElement( "p" );
     var  node=document.createTextNode( "This is new." );
     para.appendChild(node);
     var  parent=document.getElementById( "div1" );
     var  child=document.getElementById( "p1" );
     parent.replaceChild(para,child);
</script>


11    childNodes属性
   在一棵节点树上,childNodes属性可以获取任何一个元素的所有子元素。

1
2
3
4
5
//首先获得body元素
var  body_element=document.getElementsByTagName( "body" )[ 0 ];
//获得body的所有子元素
var  child_elements=body_element.childNodes;
//child_elements是一个元素数组集合,统计元素个数可以用数组的length属性


12    nodeType属性
   nodeType 属性返回节点的类型,是只读的。比较重要的节点类型有:    

元素类型 NodeType
元素节点 1
属性节点 2
文本节点 3
注释节点 8
文档节点 9
1
2
3
4
//首先获得body元素
var  body_element=document.getElementsByTagName( "body" )[ 0 ];
//查看body元素的节点类型
alert(body_element.nodeType);


13    nodeValue属性
   nodeValue 用来得到或设置一个节点的值。
   (1)元素节点的 nodeValue 是 undefined 或 null
   (2)文本节点的 nodeValue 是文本本身
   (3)属性节点的 nodeValue 是属性值

1
2
3
4
5
6
7
8
<pre  class = "lang:js decode:true" >
<p id= "p_element" >这是内容</p>
......    
var  p_value=document.getElementById( "p_element" );     
alert(p_value.nodeValue);     
alert(p_value.childNodes[ 0 ].nodeValue);   
p_value.childNodes[ 0 ].nodeValue= "这是改变后的内容" ;
</pre>

   第一个对话框的值为null,这是由于p_value.nodeValue得到的是p元素的nodeValue值,是null。
  第二个对话框的值是p元素包含的文本内容,文本内容是P元素的第一个子节点,用p_value.childNodes[0]得到这个文本节点。再使用nodeValue就可以得到或者来改变文本内容了。


14    firstChild属性和lastChild属性
   node.firstChild等价node.childNodes[0]

   node.lastChild等价于node.childNodes[node.childNodes.length-1]


15    innerHTML属性
   innerHTML属性可以读取、写入给定元素的HTML内容。
   (1)读取操作

1
2
3
4
5
6
7
8
<div id= "test" >
     <p> this  is  <em>my</em> content</p>
</div>
<script>
     window.     var  innerTest=document.getElementById( "test" );
     alert(innerTest.innerHTML);
     }
</script>

   (2)写入操作

1
2
3
4
5
6
7
8
<div id= "test" >
     <p> this  is  <em>my</em> content</p>
</div>
<script>
     window.     var  innerTest=document.getElementById( "test" );
     innerTest.innerHTML= "<p>this is <em>my new</em> content</p>" ;
     }
</script>

   注:在使用了innerHTML属性后,指定插入的元素中的内容会被全部替换。同时,innerHTML属性是HTML的专有属性,当浏览器在呈现XHTML文档时,会忽略innerHTML属性。








     本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1362067,如需转载请自行联系原作者










相关文章
|
16天前
|
JavaScript 前端开发 Go
CSS 与 JS 对 DOM 解析和渲染的影响
【10月更文挑战第16天】CSS 和 JS 会在一定程度上影响 DOM 解析和渲染,了解它们之间的相互作用以及采取适当的优化措施是非常重要的。通过合理的布局和加载策略,可以提高网页的性能和用户体验,确保页面能够快速、流畅地呈现给用户。在实际开发中,要根据具体情况进行权衡和调整,以达到最佳的效果。
|
2天前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
3天前
|
JavaScript 前端开发 开发者
.js的dom元素操作
【10月更文挑战第29天】通过灵活运用这些 DOM 元素操作方法,JavaScript 可以实现丰富的网页交互效果,如动态更新页面内容、响应用户操作、创建和删除页面元素等。在实际开发中,开发者可以根据具体的需求和场景,选择合适的 DOM 元素操作方法来实现所需的功能,为用户提供更加流畅和动态的网页体验。
|
26天前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
40 4
|
2月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 节点列表
JavaScript HTML DOM 节点列表
19 5
|
2月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 集合(Collection)
JavaScript HTML DOM 集合(Collection)
27 4
|
2月前
|
JavaScript 前端开发 索引
你可能没有听说过 js中的 DOM操作还有这个: HTMLCollection 和 NodeList
该文章详细解释了JavaScript中HTMLCollection和NodeList这两种DOM集合类型的特性、使用方法及其区别,并通过实例代码展示了如何操作这两种集合来选取和遍历DOM元素。
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
22 5
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM 元素 (节点)
JavaScript HTML DOM 元素 (节点)
26 2
|
2月前
|
JavaScript 前端开发
JavaScript HTML DOM - 改变CSS
JavaScript HTML DOM - 改变CSS
25 4