DOM总结(三)及综合案例

DOM总结(三)及综合案例

 

1,DOM属性-----replaceChild()

    replaceChild()---替换节点:

把一个给定父元素里的一个子节点替换为另外一个子节点

var reference = element.replaceChild(newChild,oldChild);

    返回值是一个指向已被替换的那个子节点的引用指针。s

    如果被插入的子节点还有子节点,则那些子节点也被插入到目标节点中

  

练习:   

 

    问题:当单击”北京”这个节点时,北京这个节点被”游泳”替换

Html代码:

  <body>

  个人所在城市:

      <ul id="city">

        <li id="bj">北京</li>

        <li id="sh">上海</li>

        <li id="tj">天津</li>

        <li id="dd">大都</li>

      </ul>      

      个人爱好:

      <ul id="fav">

        <li id="yy">游泳</li>

        <li id="pp">乒乓球</li>

        <li id="ymq">羽毛球</li>

        <li id="lq">篮球</li>

      </ul>

  </body>

 

 

 

 js解答:

 

 

 

   <script>

    window.onload = function(){

       //通过id获得节点

       var bj = document.getElementById("bj");

       //定义隐函数

        bj.onclick = function(){ 

        /

         var yy =  document.getElementById("yy");

         //通过replaceChild()方法来进行替换

         bj.parentNode.replaceChild(yy,bj);

       }    

},

2,查找属性节点

getAttribute()

     

    返回一个给定元素的一个给定属性节点的值

var attributeValue = element.getAttribute(attributeName);

    给定属性的名字必须以字符串的形式传递给该方法。

给定属性的值将以字符串的形式返回,如果给定属性不存在,getAttribute() 将返回一个 

空字符串.

 

通过属性获取属性节点。

getAttributeNode(属性的名称)--Node

 

如:<li name="beijing" id="bj">北京</li> 获取属性值和文体

 

    //通过属性名获取属性的值

     var  bjElement=document.getElementById("bj");

     var attributeValue=eduElement.getAttribute("name");

     alert("attributeValue    "+attributeValue);

        

   //通过属性名获取属性的节点

   var  bjNode=eduElement.getAttributeNode("name");

       alert(eduNode.nodeValue);

       alert(eduNode.nodeType);

       alert(eduNode.nodeName);

 

3,设置属性节点

 

   SetAttribute()

   将给定元素节点添加一个新的属性值或改变它的现有属性的值。

   element.setAttribute(attributeName,attributeValue);

   属性的名字和值必须以字符串的形式传递给此方法

   如果这个属性已经存在,它的值将被刷新;

   如果不存在,setAttribute()方法将先创建它再为其赋值。

 

    如:<li  id="bj" >北京</li> 

 

   //获取元素的引用

   var bjElement=document.getElementById("bj");

   //设置属性值

   bjElement.setAttribute("name","beijing");

   //获取设置的属性值

   var nameValue=bjElement.getAttribute("name");

   alert("nameValue "+nameValue);

 

 

4,创建新文本节点 

       createTextNode()

       创建一个包含着给定文本的新文本节点。这个方法的返回值是一个指向新建文本节   

      点引用指针。

      var textNode = document.createTextNode(text);

      方法只有一个参数:新建文本节点所包含的文本字符串

      方法的返回值:是一个指向新建节点的引用指针。它是一个文本节点,所以它的     

      nodeType 属性等于 3.

      新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性

   如:

       var pElementText=document.createElement("li");

       var textElement=document.createTextNode("南京");

       pElementText.appendChild(textElement);

5,插入节点

5.1   

     appendChild()

     为给定元素增加一个子节点:                                   

     var newreference = element.appendChild(newChild).              

     给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点。

方法的返回值是一个指向新增子节点的引用指针。

该方法通常与 createElement() createTextNode() 配合使用

新节点可以被追加给文档中的任何一个元素

5.2   

      insertBefore()

      把一个给定节点插入到一个给定元素节点的给定子节点的前面

      var reference =  element.insertBefore(newNode,targetNode);

节点 newNode 将被插入到元素节点 element 中并出现在节点 targetNode 的前面.

节点 targetNode 必须是 element 元素的一个子节点。

该方法通常与 createElement() 和 createTextNode() 配合使用

 5.3    

       insertAfter() 方法(但是DOM没提供方此方法)*

   可以通过DOM的属性方法来写一个:  

 

   function insertAfter(newElement,targetElement){

   //获取目标元素的父节点

 var parentElement=targetElement.parentNode;

   //如果目标元素是最后一个元素,则新元素插入到目标元素的后面

if(parentElement.lastChild==targetElement){

    parentElement.appendChild(newElement);

}else{//如果目标元素不是最后一个元素,则新元素插入到目标元素的的

   //下一个兄弟节点的前面,即目标元素的后面

   parentElement.insertBefore(newElement,targetElement.nextSibling);

}

}

 

6,删除节点

    removeChild()

    从一个给定元素里删除一个子节点

    var reference = element.removeChild(node);

返回值是一个指向已被删除的子节点的引用指针。

 

7,获取最后一个子节点

    lastChild:对应 firstChild 的一个属性。

    nextSibling: 返回一个给定节点的下一个兄弟节点。

    parentNode:返回一个给定节点的父节点。

    parentNode 属性返回的节点永远是一个元素节点,因为只有元素节点才有可能包含子节点。

    Document 节点的没有父节点。

previousSibling:返回一个给定节点的上一个兄弟节点  

 

 8,innerHTML属性  

    浏览器几乎都支持该属性,但不是 DOM 标准的组成部分。

     innerHTML 属性可以用来读,写某给定元素里的 HTML 内容。

 

 

  综合案例

   实现如图js的增删该

    

  结束语:如何实现 ,请继续关注我的博客! 

### 回答1: 《JavaScript高级程序设计》(第版)是一本经典的JavaScript技术书籍。此书由Nicholas C. Zakas撰写,涵盖了广泛的主题,适合有一定JavaScript基础的读者。本书详细介绍了JavaScript语言的各个方面,包括基本语法、DOM操作、BOM操作、事件处理、Ajax、浏览器兼容性问题等。 这本书的优点之一是作者对JavaScript的深刻理解和独特的教学方法。他将复杂的概念和技术变得简单易懂,通过实际的例子和案例来解释和演示。读者可以通过跟随书中的练习和项目,逐渐提升自己的JavaScript编程能力。 此外,本书还包含了一些高级主题,如函数、闭包、面向对象编程等。这些主题对于想要深入理解JavaScript的读者来说十分有价。此外,作者还介绍了一些最佳实践和优化技巧,帮助读者编写更高效、可维护的JavaScript代码。 《JavaScript高级程序设计》(第版)最大的优点之一是其综合性。它涵盖了JavaScript的各个方面,并且通过详细的目录、索引和附录,方便读者在需要时进行查找和参考。此外,书中还有大量的实例代码和详细的解释,使得读者能够更好地理解和应用所学的知识。 总结来说,《JavaScript高级程序设计》(第版)是一本非常全面、详尽的JavaScript技术书籍。它不仅适合有一定基础的读者,也适合那些想要深入了解JavaScript编程的人。无论是作为学习教材还是作为参考书,这本书都是非常有价的。阅读本书将有助于读者提升自己的JavaScript编程能力,并掌握一些高级技术和最佳实践。 ### 回答2: 《JavaScript高级程序设计(第版)》是一本经典的JavaScript编程指南,由著名的JavaScript专家尼古拉斯·泽卡斯(Nicholas C. Zakas)撰写。该书自2009年首次出版以来,一直被广泛用作学习JavaScript的参考书籍。 这本书从基础知识讲起,逐渐引导读者深入了解JavaScript的各个方面。作者详细介绍了JavaScript的语法、数据类型、运算符、函数、对象、数组等核心概念,并通过大量的实例和案例进行讲解,帮助读者理解和应用这些知识。 《JavaScript高级程序设计(第版)》特别关注JavaScript的高级特性和最佳实践。作者深入浅出地讲解了闭包、原型链、作用域链等概念,并详细探讨了JavaScript的错误处理、异步编程和模块化等重要主题。读者通过学习这些内容,可以编写出更加高效、可维护和可扩展的JavaScript代码。 此外,书中还介绍了如何在浏览器环境和服务器环境中使用JavaScript,包括DOM操作、事件处理、Ajax、Web存储等技术。作者还对跨浏览器兼容性进行了讨论,帮助读者解决在不同浏览器中遇到的兼容性问题。 总之,《JavaScript高级程序设计(第版)》是一本非常全面和权威的JavaScript学习资料。它适合初学者学习JavaScript的基础知识,也适合有一定经验的开发者深入了解和掌握JavaScript的高级特性。无论是前端开发还是后端开发,读者都能从中获得宝贵的经验和知识。 ### 回答3: 《JavaScript高级程序设计》(第版)是一本经典的JavaScript编程教材。该书由Nicholas C. Zakas撰写,对JavaScript的核心概念和高级技术进行了深入讲解。 该书主要分为个部分。第一部分介绍了JavaScript语言的基础知识,包括语法、数据类型、流程控制、函数等内容。这一部分的目的是帮助读者建立对JavaScript基础的扎实理解,为后续的高级概念打下基础。 第二部分是该书的核心内容,讨论了JavaScript的面向对象编程和浏览器环境中的DOM操作。读者将学习使用构造函数、原型和继承等概念来开发复杂的JavaScript应用程序。此外,本书还给出了大量的示例代码和实践项目,帮助读者提升编程实战能力。 第部分则涵盖了一些高级主题,如错误处理、数据存储、正则表达式、Ajax等。这些议题是现代Web开发中非常重要的部分,对于提升网页交互性和用户体验至关重要。 《JavaScript高级程序设计》(第版)在内容上更为详尽全面,适合具备一定JavaScript基础的读者学习。此外,该书侧重于实践应用,深入浅出地讲解了一些复杂的概念,并通过实例和项目帮助读者学以致用。 总的来说,该书通过系统性的介绍和练习,帮助读者逐步掌握JavaScript的核心概念和高级技术,为他们成为出色的JavaScript开发者奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值