分享

DOM节点信息、DOM属性、3大节点、替换节点、查找设置属性节点、创建删除插入节点、innerHTML属性、显示弹出窗口

 quasiceo 2014-06-17

DOM节点信息、DOM属性、3大节点、替换节点、查找设置属性节点、创建删除插入节点、innerHTML属性、显示弹出窗口

www.MyException.Cn   发布于:2013-03-21 10:08:17   浏览:35次
1
DOM节点信息、DOM属性、三大节点、替换节点、查找设置属性节点、创建删除插入节点、innerHTML属性、显示弹出窗口

DOM节点信息DOM属性、三大节点、替换节点、查找设置属性节点、创建删除插入节点、innerHTML属性、显示弹出窗口

DOM节点信息

每个节点都拥有包含着关于节点某些信息的属性。这些属性是:

nodeName(节点名称) 

nodeValue(节点值) 

nodeType(节点类型)

DOM属性---nodeName

nodeName 属性含有某个节点的名称。

var name = node.nodeName;

元素节点的 nodeName 是标签名称 

属性节点的 nodeName 是属性名称 

文本节点的 nodeName 永远是 #text 

文档节点的 nodeName 永远是 #document 

注释:nodeName 所包含的 html 元素的标签名称永远是大写的

DOM 属性 -- nodeValue

nodeValue:返回给定节点的当前值(字符串)

 如果给定节点是一个属性节点,返回值是这个属性的值。

 如果给定节点是一个文本节点,返回值是这个文本节点的内容。

 如果给定节点是一个元素节点,返回值是 null

 nodeValue 是一个 读/写 属性,但不能对元素节点的 nodeValue 属性设置值,

    但可以为文本节点的 nodeValue 属性设置一个值。

   var li = document.getElementById(li);

   if(li.firstChild.nodeType == 3)

      li.firstChild.nodeValue = “国庆60年”;

DOM 属性 -- nodeType

nodeType:返回一个整数,这个数值代表着给定节点的类型。

nodeType 属性返回的整数值对应着 12 种节点类型,常用的有三种:

Node.ELEMENT_NODE    ---1    -- 元素节点

Node.ATTRIBUTE_NODE  ---2    -- 属性节点

Node.TEXT_NODE       ---3    -- 文本节点

nodeType 是个只读属性

三大节点--元素节点

//测试元素节点,输出节点名称,节点的类型,节点的值

  var liElements=document.getElementsByTagName("li");

  for(var i=0;i<liElements.length;i++){

     alert(liElements[i].nodeName);

     alert(liElements[i].nodeType);

     alert(liElements[i].nodeValue);

  }

三大节点--属性节点

//测试属性节点,输出属性节点名称,节点的类型,节点的值

  var liElements=document.getElementsByTagName("li");

  for(var i=0;i<liElements.length;i++){

      var attrElement=liElements[i].getAttributeNode("value")

      alert("attrElement.nodeName "+attrElement.nodeName);

      alert("attrElement.nodeType "+attrElement.nodeType);

      alert("attrElement.nodeValue "+liElements[i].getAttribute("value"));

  }

三大节点--文本节点

//测试元素节点,输出节点名称,节点的类型,节点的值

  var liElements=document.getElementsByTagName("li");

  for(var i=0;i<liElements.length;i++){

   alert(liElements[i].childNodes[0].nodeName);

   alert(liElements[i].childNodes[0].nodeType);

   alert(liElements[i].childNodes[0].nodeValue);

   liElements[i].childNodes[0].nodeValue="南京";

   alert(liElements[i].childNodes[0].nodeValue);

 

   //另一种读取方法

   alert(liElements[i].firstChild.nodeName);

   alert(liElements[i].firstChild.nodeType);

   alert(liElements[i].firstChild.nodeValue);

  }

替换节点

replaceChild()

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

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

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

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

替换节点例子

//  var cityElement=document.getElementById("city");

//  var loveElement=document.getElementById("love");

//  var cityChildElement=document.getElementById("beijing");

//  var loveChildElement=document.getElementById("fankong");

//  var oldElement=cityElement.replaceChild(loveChildElement,cityChildElement);

//  loveElement.appendChild(oldElement);

//  alert(oldElement.getAttribute("id")); 

  var cityElement=document.getElementById("city");

         cityElement.onclick=function(){

         var cityChildElement=document.getElementById("beijing");

         var loveChildElement=document.getElementById("fankong");

         var oldElement=cityElement.replaceChild(loveChildElement,cityChildElement);

         loveElement.appendChild(oldElement);

         alert(oldElement.getAttribute("id"));

  }

查找属性节点

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);

设置属性节点

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);

创建新元素节点

createElement()

按照给定的标签名创建一个新的元素节点。方法只有一个参数:将被创建的元素的名字,是一个字符串.

  var reference = document.createElement(element);

方法的返回值:是一个指向新建节点的引用指针。返回值是一个元素节点,所以它的 nodeType 属性值等于 1

新元素节点不会自动添加到文档里,新节点没有 nodeParent 属性,它只是一个存在于 JavaScript 上下文的对象.

var pElement = document.createElement("p");

设置属性节点

 //创建一个新的元素

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

  //设置属性值

  pElement.setAttribute("id","pid");

  

  //获取父元素

  var loveElement=document.getElementById("love");

  //在父元素中增加子元素

loveElement.appendChild(pElement);

  //通过id获取刚创建的元素

  var pidElement=document.getElementById("pid");

  alert(pidElement.getAttribute("id"));

创建新文本节点

createTextNode()

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

  var textNode = document.createTextNode(text);

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

方法的返回值:是一个指向新建节点的引用指针。它是一个文本节点,所以它的 nodeType 属性等于 3.

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

   

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

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

  pElementText.appendChild(textElement);

插入节点(1

appendChild()

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

   var newreference = element.appendChild(newChild).              

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

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

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

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

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

 var textNode=document.createTextNode("北京");

 newliElement.appendChild(textNode);

 document.body.appendChild(newliElement);

 

 var liElement=document.getElementsByTagName("li");

 var textValue=liElement[0].firstChild.nodeValue;

 alert(textValue);

插入节点(2

insertBefore()

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

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

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

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

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

<ul id="city">     <li value="beijing^" id="beijing">北京</li>        </ul>

  <ul id="city01">   <li value="shanghai^" id="shanghai">上海</li>          </ul>

 //获取父节点

 var parentCityNode=document.getElementById("city");

 //获取子节点

 var beijingNode=document.getElementById("beijing");

 var shanghaiNode=document.getElementById("shanghai");

 //插入

 parentCityNode.insertBefore(shanghaiNode,beijingNode);

<ul id="city">

        <li value="beijing^" id="beijing">北京</li>

 </ul>

 //获取父节点

 var parentCityNode=document.getElementById("city");

 //获取子节点

 var beijingNode=document.getElementById("beijing");

 //创建节点newShanghaiNode

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

 //创建newShanghaiNode节点的文本节点

 var newTextNode=document.createTextNode("上海");

//在创建的节点上增加文本

 newShanghaiNode.appendChild(newTextNode);

 //插入节点

 parentCityNode.insertBefore(newShanghaiNode,beijingNode);

插入节点(3)

DOM 没有提供 insertAfter() 方法

function insertAfter(newElement,targetElement){

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

var parentElement=targetElement.parentNode;

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

if(parentElement.lastChild==targetElement){

    parentElement.appendChild(newElement);

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

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

   parentElement.insertBefore(newElement,targetElement.nextSibling);

}

 }

删除节点

removeChild()

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

   var reference = element.removeChild(node);

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

某个节点被removeChild()方法删除时,这个节点所包含的所有子节点将同时被删除。

 <ul id="city">  <li value="beijing^" id="beijing">北京</li> </ul>

 var ulElement=document.getElementById("city");

 var liElement=document.getElementById("beijing");

 ulElement.removeChild(liElement);

如果想删除某个节点,但不知道它的父节点是哪一个,parentNode 属性可以帮忙。

<ul id="city">  <li value="beijing^" id="beijing">北京</li> </ul>

   var liElement=document.getElementById("beijing");

   var parentElement=liElement.parentNode;

   parentElement.removeChild(liElement);

遍历节点树

ChildNodes:返回一个数组,这个数组由给定元素节点的子节点构成:

var nodeList = node.childNodes;

文本节点和属性节点都不可能再包含任何子节点,所以它们的 ChildNodes 属性永远会返回一个空数组。

如果想知道某个元素有没有子节点,可以用 hasChildNodes 方法。

如果想知道某个元素有多少个子节点,可以用 childNodes 数组的 length 属性。

childNodes 属性是一个只读属性。

获取第一个子节点

firstChild:该属性返回一个给定元素节点的第一个子节点,返回这个节点对象的指针。

    var reference = node.firstChild;

文本节点和属性节点都不可能包含任何子节点,所以它们的 firstChild 属性永远会返回 null

某个元素的 firstChild 属性等价于这个元素的 childNodes 节点集合中的第一个节点,即:

  var reference = node.ChildNodes[0];

firstChild 属性是一个只读属性。

获取最后一个子节点

lastChild:对应 firstChild 的一个属性。

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

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

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

document 节点的没有父节点。

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

innerHTML属性

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

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

<div id="city"></div>

  var divElement=document.getElementById("city");

  divElement.innerHTML="<li value='beijing^'' id='beijing'>北京</li>";

显示弹出窗口(方案一)

语法:

vReturnValue = window . showModalDialog ( sURL,

                                                    vArguments , sFeatures )

参数说明: 

sURL--必选参数,用来指定对话框要显示的文档的URL。 

vArguments--可选参数,用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。 

sFeatures--可选参数,用来描述对话框的外观等信息,可以使用一个或几个,用分号“;”隔开。

显示弹出窗口(方案二)

window.opener 的用法

     window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的text中,就可以写为: 
    window.opener.document.getElementById("name").value = "输入的数据";

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多