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 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
1月前
|
JavaScript 前端开发 算法
js开发:请解释什么是虚拟DOM(virtual DOM),以及它在React中的应用。
虚拟DOM是React等前端框架的关键技术,它以轻量级JavaScript对象树形式抽象表示实际DOM。当状态改变,React不直接操作DOM,而是先构建新虚拟DOM树。通过高效diff算法比较新旧树,找到最小变更集,仅更新必要部分,提高DOM操作效率,降低性能损耗。虚拟DOM的抽象特性还支持跨平台应用,如React Native。总之,虚拟DOM优化了状态变化时的DOM更新,提升性能和用户体验。
23 0
|
2天前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。
|
10天前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
15 0
|
10天前
|
JavaScript 前端开发 安全
JavaScript DOM 操作:解释一下浏览器的同源策略。
**同源策略**是浏览器安全基石,它阻止脚本跨不同协议、域名或端口访问资源,防止恶意行为。例如,HTTP页面无法直接用JS获取HTTPS页面内容。**CORS**允许跨域请求,但需服务器配合设置,通过`document.domain`属性可配置,但仍受限于服务器配置。
14 4
|
16天前
|
JavaScript
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
【归总】原生js操作浏览器hash、url参数参数获取/修改方法合集
|
21天前
|
JavaScript
理解DOM树的加载过程(js的问题)
理解DOM树的加载过程(js的问题)
10 0
|
23天前
|
JavaScript 前端开发
深入了解 JavaScript 中的 DOM 和 BOM
深入了解 JavaScript 中的 DOM 和 BOM
18 4
|
30天前
|
JavaScript 前端开发 算法
深入探讨前端框架Vue.js中的虚拟DOM机制
本文将深入探讨前端框架Vue.js中的虚拟DOM机制,分析其原理、优势以及在实际开发中的应用场景,帮助读者更好地理解Vue.js框架的核心特性。
N..
|
1月前
|
JavaScript 前端开发 容器
jQuery中的DOM操作
jQuery中的DOM操作
N..
14 1