xml dom中var x=xmlDoc.getelementsbynameTagName("title")[0].ownerDocument; [ ]中为零代表什么取2时

etElementByID&getElementsByName&getElementsByTagName的区别和总结&+js+Mxl+xmlhttp
etElementByID
getElementsByName&
getElementsByTagName的区别和总结
WEB标准下可以通过getElementById(), getElementsByName(), and
getElementsByTagName_r()访问DOCUMENT中的任一个标签:
1、getElementById()
getElementById()可以访问DOCUMENT中的某一特定元素,顾名思义,就是通过ID来取得元素,所以只能访问设置了ID的元素。
比如说有一个DIV的ID为docid:
id="docid"&&/div&
那么就可以用getElementById("docid")来获得这个元素。
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"
&meta http-equiv="Content-Type" content="text/
charset=gb2312"&
&title&ById&/title&
&style type="text/css"&
height:400
background-color:#999;}
&body&&div id="docid"
name="docname"
onClick="bgcolor()"&&/div&
&script language="JavaScript"
type="text/JavaScript"&
function bgcolor(){
document.getElementByIdx_x("docid").style.backgroundColor="#000"
、getElementsByName()
这个是通过NAME来获得元素,但不知大家注意没有,这个是GET ELEMENTS,复数ELEMENTS代表获得的不是一个元素,为什么呢?
因为DOCUMENT中每一个元素的ID是唯一的,但NAME却可以重复。打个比喻就像人的身份证号是唯一的(理论上,虽然现实中有重复),但名字
重复的却很多。如果一个文档中有两个以上的标签NAME相同,那么getElementsByName()就可以取得这些元素组成一个数组。
比如有两个DIV:
&div name="docname"
id="docid1"&&/div&
&div name="docname"
id="docid2"&&/div&
那么可以用getElementsByName("docname")获得这两个DIV,用getElementsByName("docname")[0]访问第一个DIV,用getElementsByName
3、getElementsByTagName_r()
这个呢就是通过TAGNAME(标签名称)来获得元素,一个DOCUMENT中当然会有相同的标签,所以这个方法也是取得一个数组。
下面这个例子有两个DIV,可以用getElementsByTagName_r("div")来访问它们,用getElementsByTagName_r("div")[0]访问第一个DIV,用
getElementsByTagName_r("div")[1]访问第二个DIV。
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" ""&
&html xmlns=""&
&meta http-equiv="Content-Type" content="text/
charset=gb2312"&
&title&Byname,tag&/title&
&style type="text/css"&
#docid1,#docid2{
height:400
background-color:#999;}
&div name="docname" id="docid1"
onClick="bgcolor()"&&/div&
&div name="docname" id="docid2"
onClick="bgcolor()"&&/div&
&script language="JavaScript"
type="text/JavaScript"&
function bgcolor(){
var docnObj=document.getElementsByTagName_r("div");
docnObj[0].style.backgroundColor = "black";
docnObj[1].style.backgroundColor = "black";
总结一下标准DOM,访问某一特定元素尽量用标准的getElementById(),访问标签用标准的getElementByTagName(),但IE不支持
getElementsByName(),所以就要避免使用getElementsByName(),但getElementsByName()和不符合标准的document.all[]也不是全无是处,它
们有自己的方便之处,用不用那就看网站的用户使用什么浏览器,由你自己决定了。
  Javascript中的getElementById十分常用,但在标准的页面中,一个id只能出现一次,如果我想同时控制多个元素,例如点
一个链接,
让多个层隐藏,该怎么做?用class,当然,同一个class是可以允许在页面中重复出现的,那么有没有getElementByClass呢?没有,
但是可以解决:
//Create an array
var allPageTags = new Array();
function hideDivWithClasses(theClass) {
//Populate the array with all the page tags
var allPageTags=document.getElementsByTagName_r("div");
//Cycle through the tags using a for loop
for (i=0; i//Pick out the tags with our class name
if (allPageTags[i].className==theClass) {
//Manipulate this in whatever way you want
allPageTags[i].style.display='none';
1,grid.getCell(i,3).innerHTML;curobj.nextSibling.innerHTML
&&& innerHTML
InnerHtml 属性不自动对进出 HTML 实体的特殊字符进行编码。HTML 实体允许显示特殊字符(如
& 字符),浏览器通常会将这些字符解释为具有特殊含义。&
字符会被解释为标志的开头,并且不会在页面上显示。若要显示 & 字符,将需要使用实体
例如,如果 InnerHtml 属性设置为 "&b& Hello
&/b&",则 & 和
& 字符不会分别转换为 & 和
&。呈现的输出仍将是:&b&
Hello &/b&。浏览器将检测
&b& 标记并用粗体显示“Hello”文本。
警告&& 由于未对此文本进行 HTML
编码,因此可以在文本的 HTML 标记内嵌入脚本。如果该属性是使用用户输入动态设置的,请务必验证它的值以减少安全漏洞。
若要提供自动 HTML 编码和解码,请使用 InnerText 属性。
以上是微软的一个网站上介绍的,而我只是简单的认为取出来的是html格式。
2,typeName =
temp.options[temp.selectedIndex].innerTdocument.all("B1").innerText="
关闭";name==name_other.options[i].innerText;opn.innerText=nameArray[i];
使用 InnerText 属性以编程方式修改 HTML 服务器控件的开始和结束标记之间的内容。
与 InnerHtml 属性不同,InnerText 属性自动对进出 HTML 实体的特殊字符进行编码。HTML
实体允许显示特殊字符(如 &
字符),浏览器通常会将这些字符解释为具有特殊含义。&
字符会被解释为标志的开头,并且不会在页面上显示。若要显示 & 字符,将需要使用实体
例如,如果 InnerText 属性设置为 "&b& Hello
&/b&",则 & 和
& 符号分别转换为 & 和
&。呈现的输出将是:& b
& Hello &/b
实体将向浏览器指示这些字符将显示在页上。浏览器将不检测 &b&
标记并用粗体显示该文本。显示在页上的文本是:&b& Hello
&=======================================================================
用js读出xml中的项中。项中。。项中。的子内容
LANGUAGE="JavaScript"&
& xmlDoc=loadXMLDoc("");
//调用下面的loadxml
&//var x=xmlDoc.getElementsByTagName_r('title');
//得到一共有多少个title对象
& var x=xmlDoc.getElementsByTagName_r('item');
&// var x=b.getElementsByTagName_r('title');
& for (i=0;i&x.i++)
& //document.write(x[i].childNodes[1].nodeValue)
//不知道元素,则用
xmldoc.getElementsByTagName_r("item")[i].chileNodes[0].nodeValue表示第一项的值
document.write(x[i].getElementsByTagName_r("title").item(0).text);&&
//心得"如果知道title指定元素则用他"
& document.write("&br
& function loadXMLDoc(dname)
// code for IE
if (window.ActiveXObject)
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation &&
document.implementation.createDocument)
xmlDoc=document.implementation.createDocument("","",null);
alert('Your browser cannot handle this script');
xmlDoc.async=
xmlDoc.load(dname);
return(xmlDoc);
&&/SCRIPT&
=================================================
xml+js实例<img src="/blog7style/images/common/sg_trans.gif" real_src ="/Emoticons/QQ/03.gif" WIDTH="20" BORDER="0" HEIGHT="20"
ALT="etElementByID&getElementsByName&getElementsByTagName的区别和总结&+js+Mxl+xmlhttp"
TITLE="etElementByID&getElementsByName&getElementsByTagName的区别和总结&+js+Mxl+xmlhttp" />
The XML file“note.xml“&?xml version="1.0"
encoding="ISO8859-1" ?&
&to&Tove&/to&
&from&Jani&/from&
&heading&Reminder&/heading&
& &body&Don't forget
me this weekend!&/body&
以下三组脚本分别反映了不同的方法(容易理解)
&script language="VBScript"
type="text/VBScript"&
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for each x in xmlDoc.documentElement.childNodes
& document.write(x.nodename)
& document.write(": ")
& document.write(x.text)
document.write("&br&")
&script language="JavaScript"
for="window" event="onload"&
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from.innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text
&title&HTML using XML
data&/title&
&h1&Refsnes Data Internal
id="to"&&/span&
id="from"&&/span&
id="header"&&/span&&/b&
id="body"&&/span&
language="JavaScript"&
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write("The From element contains: ")
document.write(xmlDoc.getElementsByTagName"from").item(0).text)
etElementByID getElementsByName&
getElementsByTagName&&&&&OE&&&&&’&OE&&&&&“
WEB&&&D&&D&&&&&&#65533;&&&&&&&&&&DgetElementById(),
getElementsByName(), and
getElementsByTagName_r()&&&&—&DOCUMENT&&&&&&&&&&&&&&&&&&D&&&frac34;&&frac14;&
1&&&#65533;getElementById()
getElementById()&&#65533;&&&&&&&&—&DOCUMENT&&&&&&&&Y&#65533;&&&&&&sup1;&&&&…&&&&&&frac14;&OE&&&frac34;&&#65533;&#65533;&&&#65533;&&sup1;&&&frac14;&OE&°±&&&&&&&&&DID&&#65533;&&&#65533;&&&frac34;—&…&&&&&&frac14;&OE&&&&&&&&#65533;&&&&frac12;&&&&—&&&&frac34;&&frac12;&&&&ID&&&&…&&&&&&&
&&”&&&&&&&&&&&&&&&DIV&&&ID&&&docid&&frac14;&
&&&&&sup1;&&°±&&#65533;&&&&&”&getElementById("docid")&&#65533;&&&#381;·&&frac34;—&&&&&&&…&&&&&&&
&&&#65533;getElementsByName()
&&&&&&&&&&&&&&&DNAME&&#65533;&&&#381;·&&frac34;—&…&&&&&&frac14;&OE&&frac12;&&&&#65533;&&Y&&¤&&&&&&sup3;&&&&#65533;&&sup2;&&&&&&frac14;&OE&&&&&&&&&GET&&&ELEMENTS&&frac14;&OE&¤&#65533;&&°ELEMENTS&&&&&&&&#381;·&&frac34;—&&&&&&#65533;&&&&&&&&&&…&&&&&&frac14;&OE&&&&&&&&sup1;&&‘&&&frac14;&Y
&&&&&&DOCUMENT&&&&&&#65533;&&&&&&&…&&&&&&&ID&&&&”&&&&&&&&&frac14;&OE&&frac12;&NAME&&#65533;&&&#65533;&&&&&&D&#65533;&¤&#65533;&&&&&“&&&&&”&&&&°±&&&#65533;&&&&&&&&&&&&frac12;&&&#65533;&&#65533;·&&&&”&&&&&&&&&frac14;&&&#65533;&&&&&&&S&&frac14;&OE&&&frac12;&&&&&#381;°&&&#382;&&&&&&&&D&#65533;&¤&#65533;&&frac14;&&&frac14;&OE&&frac12;&&&#65533;&#65533;&&—
&&D&#65533;&¤&#65533;&&&&&#65533;&&&frac34;&&¤&&&&&&&&&#382;&&&&&&&&&&D&&&&&&&&&&&¤&&&&&&&&&S&&&&&&D&&&frac34;NAME&&&&&#65533;&OE&&frac14;&OE&&&&&sup1;&getElementsByName()&°±&&#65533;&&&&&&#65533;&&&frac34;—&&&&&&&…&&&&&&&&&&#65533;&&&&&&&&°&&&&&&
&&”&&&&&&&&¤&&&DIV&&frac14;&
&&&&&sup1;&&&#65533;&&&&&”&getElementsByName("docname")&&#381;·&&frac34;—&&&&&¤&&&DIV&&frac14;&OE&”&getElementsByName("docname")[0]&&&&—&&&&&&&&&&DIV&&frac14;&OE&”&getElementsByName
3&&&#65533;getElementsByTagName_r()
&&&&&&&‘&&°±&&&&&&&&&DTAGNAME&&frac14;&&&&D&&&frac34;&&#65533;&#65533;&&°&&frac14;&&&#65533;&&&#381;·&&frac34;—&…&&&&&&frac14;&OE&&&&&&DOCUMENT&&&&&frac12;“&&&&&frac14;&&&&&&&&&#65533;&OE&&&&&&D&&&frac34;&&frac14;&OE&&&&&&&&&&&&&&&sup1;&&sup3;&&&sup1;&Y&&&&&#65533;&&&frac34;—&&&&&&&&°&&&&&&
&&&&&#65533;&&&&&&&&&frac34;&&&&#65533;&&&&&¤&&&DIV&&frac14;&OE&&#65533;&&&&&”&getElementsByTagName_r("div")&&#65533;&&&&&—&&&&&&&&&frac14;&OE&”&getElementsByTagName_r("div")[0]&&&&—&&&&&&&&&&DIV&&frac14;&OE&”&
getElementsByTagName_r("div")[1]&&&&—&&&&&&&OE&&&DIV&&&
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
http://www.w3.org/1999/xhtml"&
&&&&&“&&&&&&&&&D&&D&DOM&&frac14;&OE&&&&—&&&Y&#65533;&&&&&&sup1;&&&&…&&&&&°&frac12;&&D&#65533;&”&&&&D&&D&&&&getElementById()&&frac14;&OE&&&&—&&&&D&&&frac34;&”&&&&D&&D&&&&getElementByTagName(),&&frac12;&IE&&&#65533;&”&&&OE&#65533;
getElementsByName()&&frac14;&OE&&&&&&&°±&&&#65533;&&#65533;&&…&#65533;&&frac12;&&”&getElementsByName()&&frac14;&OE&&frac12;&getElementsByName()&’&OE&&&#65533;&&&&&#65533;&&&&D&&D&&&&document.all[]&&sup1;&Y&&&#65533;&&&&…&&—&&&&&¤&&&frac14;&OE&&&
&&&&&&&&D&&·±&&&&&&sup1;&&frac34;&&&sup1;&&¤&&&frac14;&OE&”&&&&#65533;&”&&&&&°±&&&&&frac12;‘&&&&&&&”&&&·&&frac12;&&”&&&&&&sup1;&&&&#65533;&&&&&&&&frac14;&OE&”±&&frac12;&&&D&&·±&&&sup3;&&&&&&&&&
&&&&&&Javascript&&&&&&getElementById&&#65533;&#65533;&&&&&&&”&&&frac14;&OE&&frac12;&&&&&&&D&&D&&&&&&&&&#65533;&&&&&&frac14;&OE&&&&&&id&&#65533;&&&&frac12;&&D&&&#381;°&&&&&&&&frac14;&OE&&&&&#382;&&&‘&&&sup3;&&#65533;&OE&—&&&#381;&&&&&¤&&&&&…&&&&&&frac14;&OE&&frac34;&&&&&&&sup1;
&&&&&&&“&frac34;&&#381;&&&frac14;&OE
&&&&¤&&&&&±&&&&#65533;&—&#65533;&&frac14;&OE&&&&&&#381;&&sup1;&&&#65533;&&&frac14;&Y&”&class&&frac14;&OE&&frac12;“&&&&&frac14;&OE&&#65533;&OE&&&&&&class&&&&&#65533;&&&&&…&#65533;&&&&&&&&&&&#65533;&&&&&&D&#65533;&¤&#65533;&&D&&&#381;°&&&&&frac14;&OE&&&&&sup1;&&&&&&sup2;&&&&getElementByClass&‘&&&frac14;&Y&&sup2;&&&&&&frac14;&OE
&&frac12;&&&&&&#65533;&&&&&&&&&&sup3;&&frac14;&
//Create an array
var allPageTags = new Array();
function hideDivWithClasses(theClass) {
//Populate the array with all the page tags
var allPageTags=document.getElementsByTagName_r("div");
//Cycle through the tags using a for loop
for (i=0; i//Pick out the tags with our class name
if (allPageTags[i].className==theClass) {
//Manipulate this in whatever way you want
allPageTags[i].style.display='none';
1&&frac14;&OEgrid.getCell(i,3).innerHTML&&frac14;&curobj.nextSibling.innerHTML
&&& innerHTML
InnerHtml &±&#382;&&&&&&#65533;&&D&&&S&&&&sup1;&&&&&D& HTML
&&&#382;&&frac12;“&&&&&&sup1;&&&S&&—&&&&&&&&&OE&&frac14;&&&&#65533;&&&HTML
&&&#382;&&frac12;“&…&#65533;&&&&&&frac34;&¤&&&&sup1;&&&S&&—&&&&&frac14;&&&& &
&&—&&&&&frac14;&&&frac14;&OE&&&#65533;&&&&&&&&&&&&&&frac14;&&°&&&&&&&&&—&&&&&&&&D&S&&&&…·&&&&&&sup1;&&&S&&#65533;&&&sup1;&&&&&
&&—&&&&&frac14;&&&&&&&&&D&S&&&&&&D&&—&&&&&frac14;&&¤&&&frac14;&OE&&sup1;&&&”&&&#65533;&&frac14;&&&&&&&&&#65533;&&&&S&&&frac34;&¤&&&&&&&&&&#65533;&&&frac34;&¤&
& &&—&&&&&frac14;&OE&°&&&&&&&#65533;&&frac12;&&”&&&&#382;&&frac12;“
&&frac34;&&&&&&frac14;&OE&&&&&#382;& InnerHtml &±&#382;&&&&&&frac34;&&frac12;&&&& " Hello "&&frac14;&OE&&&
& &’&OE & &&—&&&&&&#65533;&&frac14;&&&&&&&&&frac12;&&&#65533;&&&&
& &’&OE &&&&&‘&&&#381;°&&&&&frac34;“&&D&&&&#65533;&°&&&&&&frac14;&
Hello &&&&&&#65533;&&&&&&&°&&&&&&&
&&&D&&°&&sup1;&&”&&&sup2;—&&frac12;“&&&frac34;&¤&&&&Hello&&&#65533;&&&D&&&&&&
&&&&‘&S&&
&”±&&&#381;&&&&&&sup1;&&¤&&&D&&&&&&&&&OE HTML
&&frac14;&&&&#65533;&&frac14;&OE&&&&&¤&&#65533;&&&&&&&&&&D&&&&&&
&&&D&&°&&…&&&OE&…&&&&&&&&&&&&&&&#382;&&&&&±&#382;&&&&&&&&frac12;&&”&&”&&&·&&frac34;“&…&&&S&&&&#65533;&&&frac34;&&frac12;&&&&&&frac14;&OE&&·&&S&&&…&&&OE&&&#65533;&&&&&&&&&frac14;&&&&&D&#65533;&°‘&&&&…&&&frac14;&#65533;&&&#382;&&&
&&&&&&#65533;&&#65533;&#65533;&&frac34;&&&D&&&S& HTML
&&frac14;&&&&#65533;&’&OE&&&&&&#65533;&&frac14;&OE&&·&&frac12;&&”&
InnerText &±&#382;&&&&&&
&&&&&&S&&&&&frac34;&&&frac12;&&&&&&&&&&&&frac12;‘&&&&&&S&&&&&&#65533;&&&&&frac14;&OE&&&OE&&‘&&#65533;&&&&&&&&&#65533;&&&&&&¤&&&&&#65533;&&&D&&&#65533;&&&&&&&html&&&frac14;&&frac14;&#65533;&&&
2&&frac14;&OEtypeName =
temp.options[temp.selectedIndex].innerTdocument.all("B1").innerText="
&…&sup3;&—&";name==name_other.options[i].innerText&&frac14;&opn.innerText=nameArray[i];
&&frac12;&&”& InnerText &±&#382;&&&&&&&&frac14;&&&&&&&sup1;&&frac14;&#65533;&&&&”&sup1; HTML
&&&#65533;&&S&&&&&&#381;&&&&&&&&&frac14;&&&&&’&OE&&“&&#65533;&Y&&&D&&°&&sup1;&&—&&&&&&…&&&sup1;&&&
&&&#381; InnerHtml &±&#382;&&&&&&#65533;&&#65533;&OE&&frac14;&OEInnerText &±&#382;&&&&&D&&&S&&&&sup1;&&&&&D&
HTML &&&#382;&&frac12;“&&&&&&sup1;&&&S&&—&&&&&&&&&OE&&frac14;&&&&#65533;&&&HTML
&&&#382;&&frac12;“&…&#65533;&&&&&&frac34;&¤&&&&sup1;&&&S&&—&&&&&frac14;&&&& &
&&—&&&&&frac14;&&&frac14;&OE&&&#65533;&&&&&&&&&&&&&&frac14;&&°&&&&&&&&&—&&&&&&&&D&S&&&&…·&&&&&&sup1;&&&S&&#65533;&&&sup1;&&&&&
&&—&&&&&frac14;&&&&&&&&&D&S&&&&&&D&&—&&&&&frac14;&&¤&&&frac14;&OE&&sup1;&&&”&&&#65533;&&frac14;&&&&&&&&&#65533;&&&&S&&&frac34;&¤&&&&&&&&&&#65533;&&&frac34;&¤&
& &&—&&&&&frac14;&OE&°&&&&&&&#65533;&&frac12;&&”&&&&#382;&&frac12;“
&&frac34;&&&&&&frac14;&OE&&&&&#382;& InnerText &±&#382;&&&&&&frac34;&&frac12;&&&& " Hello "&&frac14;&OE&&&
& &’&OE & &&&&&#65533;·&&&&&&&&frac12;&&&#65533;&&&&
&&&&&‘&&&#381;°&&&&&frac34;“&&D&&°&&&&&&frac14;&& b
& Hello &/b
&&&&& &’&OE &
&&&#382;&&frac12;“&°&&&#65533;‘&&&#65533;&&&&&&&&OE&D&¤&&&&&&&&&—&&&&°&&&&frac34;&¤&&&&&&&&&&S&&&&&&#65533;&&&&&&&°&&&&#65533;&&&&&&
&&&D&&°&&sup1;&&”&&&sup2;—&&frac12;“&&&frac34;&¤&&&&&&&D&&&&&&&&&frac34;&¤&&&&&&&&&&S&&&&&&D&&&&&&&&frac14;&
&=======================================================================
&”&js&&&&&D&xml&&&&&&&&&sup1;&&&&&&&&&sup1;&&&&&&&&&&&&sup1;&&&&&&&&&&&&#65533;&&…&&&sup1;
=================================================
xml+js&&&#382;&&frac34;&
<img src="/blog7style/images/common/sg_trans.gif" real_src ="/Emoticons/QQ/03.gif" WIDTH="20" BORDER="0" HEIGHT="20"
ALT="etElementByID&getElementsByName&getElementsByTagName的区别和总结&+js+Mxl+xmlhttp"
TITLE="etElementByID&getElementsByName&getElementsByTagName的区别和总结&+js+Mxl+xmlhttp" />
The XML file&&&note.xml&&&
& Reminder
Don't forget me this weekend!
&&&&&&&&&&&&&&&&&&&&&&&&&&#65533;&#65533;&&&&&&&&&#65533;&&#65533;&OE&&&&&&sup1;&&sup3;&(&&&sup1;&&“&&#65533;&&&&)
Refsnes Data Internal Note
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。XML DOM getElementsByTagName() 方法 PHP100_com
XML DOM getElementsByTagName() 方法
定义和用法
getElementsByTagName() 方法可返回带有指定名称的所有元素的一个节点列表。
getElementsByTagName(name)
字符串值,规定需检索的标签名。值 &*& 匹配所有的标签。
文档树中具有指定标记的 Element 节点的只读数组(从技术上讲,是 NodeList 对象)。返回的元素节点的顺序就是它们在源文档中出现的顺序。
该方法将返回一个 NodeList 对象(可以作为只读数组处理),该对象存放文档中具有指定标签名的所有 Element 节点,它们存放的顺序就是在源文档中出现的顺序。NodeList 对象是“活”的,即如果在文档中添加或删除了指定标签名的元素,它的内容会自动进行必要的更新。
注意,Element 接口定义了一个同名的方法,该方法只检索文档的子树。另外,HTMLDocument 接口定义了 getElementsByName() 方法,基于 name 属性的值(而不是标签名)检索元素。
可以用下列代码检索并遍历 HTML 文档中的所有 &h1& 标记:
var headings = document.getElementsByTagName(&h1&);
for (var i = 0; i & headings. i++)
var h = headings[i];
在所有的例子中,我们将使用 XML 文件 ,以及 JavaScript 函数 。
以下代码片段可显示 &books.xml& 中所有 &title& 元素的值:
xmlDoc=loadXMLDoc(&books.xml&);
var x=xmlDoc.getElementsByTagName('title');
for (i=0;i&x.i++)
document.write(x[i].childNodes[0].nodeValue)
document.write(&&br /&&)
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML2849人阅读
以下程序在IE6和Firefox/3.1b1 下测试通过在Ajax返回的responseXML中,需要对其进行解析,而IE6和Firefox是有点小区别的以下附上完整代码再解释。XML文件:&version="1.0"&&&&Red&&&&Green&&&&BlueHTML:&xmlns="http://www.w3.org/1999/xhtml"&content="text/&charset=utf-8"&http-equiv="Content-Type"&无标题&1&type="text/javascript"var&options&=&false;//创建XMLHttpRequest对象function&CreateRequest(){&&&&if&(window.XMLHttpRequest)&&&&&&&&return&new&XMLHttpRequest();&&&&else&if&(window.ActiveXObject)&&&&&&&&return&new&ActiveXObject("Microsoft.XMLHTTP");&&&&else&&&&&&&&return&}function&GetDataFromXML(filename){&&&&var&request&=&CreateRequest();&&&&if&(!request)&&&&&&&&&&&&&&&&&&&&var&result&=&document.getElementById("result");&&&&var&txts&=&document.getElementById("txts");&&&&&&&&request.open("GET",&filename);&&&&request.onreadystatechange&=&function()&&&&{&&&&&&&&if&(request.readyState==4)&&&&&&&&{&&&&&&&&&&&&//由于是本地测试,有时会出现&request.status=0&的情况&&&&&&&&&&&&if&(request.status==200)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&var&xmlD&&&&&&&&&&&&&&&&//IE6&&&&&&&&&&&&&&&&if&(window.ActiveXObject)&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&xmlDoc&=&new&ActiveXObject("Microsoft.XMLDOM");&&&&&&&&&&&&&&&&&&&&xmlDoc.async&=&false;&&&&&&&&&&&&&&&&&&&&xmlDoc.load(request.responseXML);//不可以是&responseText&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&//Firefox&&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&xmlDoc&=&request.responseXML;&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&options&=&xmlDoc.getElementsByTagName("option");&&&&&&&&&&&&&&&&txts.value&=&options.&&&&&&&&&&&&&&&&ListOptions();&&&&&&&&&&&&}&&&&&&&&}&&&&}&&&&request.send(null);}//为select添加选项function&ListOptions(){&&&&var&select&=&document.getElementById("select");&&&&&&&&for&(var&i=0;&i;&i++)&&&&{&&&&&&&&select.options[i+1]&=&new&Option(options[i].firstChild.data,&options[i].firstChild.data);&&&&}}function&SelectChange(){&&&&var&txts&=&document.getElementById("show");&&&&var&select&=&document.getElementById("select");&&&&txts.style.color&=&select.}&&&&&&&&&&&&&type="button"&id="btn"&onclick="GetDataFromXML('test.xml');"&value="Submit"&&&&&&&&&&&&&&id="result"&&&&&&&&&&&&&id="select"&onchange="SelectChange();"&&&&&&&&&&&&==请选择颜色==&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&cols="10"&rows="10"&id="txts"&style="width:500&height:300"&&&&&&&&&&id="show"&&&&&&&&this&is&show...&&&&区别体现在HTML代码中40-51行,IE6中是要创建对象 ActiveXObject("Microsoft.XMLDOM") 对responseXML对象进行加载后方可用getElementsByTagName进行解析的。不知道这点区别而一直在IE6下测试会一头雾水,没报错但也没结果。为了简单,本程序在创建XMLHttpRequest对象时只考虑了IE6及以上版本和FF,而如果要考虑老版本的IE,则需要更复杂的创建过程。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11571次
排名:千里之外
(5)(2)(1)(3)1348人阅读
要检测浏览器是否支持DOM2级的XML,可以使用以下的代码:
var hasXmlDom=document.implementation.hasFeature(&XML&,&2.0&);
DOMParser类型
var parser=new DOMParser();
var xmldoc=parser.parseFormString(&&root&&child/&&/root&&,&text/html&);
xmldoc.documentElement.tagN//root
xmldoc.documentElement.firstChild.tagN//child
var children=xmldoc.getElementsByTagName(&child&);
DOMParser只能解析&#26684;式良好的XML文档,因此解析的文档要有一定的要求。因此在解析文档时用try-catch进行处理
XMLSerializer类型
将DOM文档序列化为XML字符串。
var serializer=new XMLSerializer();
var xml=serializer.serializeToString(xmldom);
序列化后的字符串并不适合打印,但是它可以序列化任何有效地DOM对象,也包括HTML文档。序列化后的文档是&#26684;式良好的。
IE创建XML解析对象
function createDocument(){
if(typeof arguemnts.callee.activeXString!=&string&){
var versions=[&MSXML2.DOMDocument.6.0&,&MSXML2.DOMDocument.3.0&,&MSXML2.DOMDocument&],i,
for(i=0,len=versions.i&i&#43;&#43;){
new ActiveXObject(versions[i]);
arguments.callee.activeXString=versions[i];
}catch(ex){ &}
return new ActiveXObject(arguments.callee.activeXString);
解析XML文档的方法是loadXML()方法。解析过程出错,可以查看parseError属性,在其中找到错误信息。可以通过下面的代码找到错误:
if(xmldom.parseError!=0){
&&// 添加处理错误的代码
应该在调用了loadXML之后,查询XML文档之前检查是否发生了解析错误。
IE将序列化XML的能力内置在了DOM文档中,每个DOM节点都内置了一个xml属性,保存着该节点的XML字符串。
IE中的XML文档对象也可以加载来自服务器的文件。要加载的XML文档必须与页面中运行的js代码来自同一台服务器。加载文档的方式分为两种,同步和异步,设置async属性为true时,表示异步,false时表示同步。在确定了文档的加载方式后,调用load()可以启动下载过程。这个方法接收一个参数,即要加载的XML文档的URL。在同步方式下,调用load()之后可以立即检测解析错误并执行相关的XML处理。
var xmldoc=createDocument();
xmldoc.async=
xmldoc.load(&example.xml&);
if(xmldoc.parseError!=0){
&& &//处理错误
alert(xmldoc.xml);
虽然同步加载的方式比较简便,但是时间过长。因此在加载过程中,多采用异步加载的方式。
var xmldoc=createDocument();
xmldoc.async=
xmldoc.onreadystatechange=function(){
if(xmldoc.readyState==4){
&if(xmldoc.parseError!=0){
//处理错误
alert(xmldoc.xml);
xmldoc.load(&example.xml&);
ActiveX控件为了预防安全问题,不允许使用this对象。
跨浏览器处理XML
解析XML的方法
function parseXml(xml){
& & & var xmldom=
&&if(typeof DOMParser!=&undefined&){
&xmldom=(new DOMParser()).parseFromString(xml,&text/xml&);
&var errors=xmldom.getElementsByTagName(&parsererror&);
&if(errors.length){
throw new Error(&XML parsing error:&&#43;errors[0].textContent);&
&& }else if(typeof ActiveXObject!=&undefined&){
&&xmldom=createDocument();
&&xmldom.load(xml);
&&if(xmldom.parseError!=0){
throw new Error(&XML parsing error:&&#43;xmldom.parseError.reason); &
&&throw new Error(&No XML parser available!&); &&
只接受一个参数XML的字符串,返回DOM结构的XML。
对于序列化XML,也可以按照同样的方式编写一个能够在四大浏览器中运行的函数。
function serializeXml(xmldom){
& if(typeof XMLSerializer!=&undefined&){
&return (new XMLSerializer()).serializeToString(xmldom); &
& }else if(typeof xmldom.xml!=&undefined&){
return xmldom. &
throw new Error(&could not serialize XML DOM&); &
浏览器对XPath的支持
XPath是设计用来在DOM文档中查找节点的一种手段,因而对XML的处理也很重要。很多浏览器实现了这个标准,IE有自己的实现方式。
DOM3级XPath
下面的代码是用来检测浏览器是否支持DOM3级的XPath:
var supportsXPath=document.implementation.hasFeature(&XPath&,&3.0&);
在DOM3级的XPath规范定义的类型中,最重要的两个类型是XPathEvaluator和XPathResult 。XPathEvaluator用在特定的上下文中对XPath表达式的求&#20540;。这个类型由三个方法:
createExpression(expression,nsresolver):将XPath表达式及相应的命名空间信息转化成一个XPathExpression,这是查询的编译版。在多次使用同一个查询时很有用。
createNSResolver(node):根据node的命名空间信息创建一个新的XPathNSResolver对象。在基于使用命名空间的XML文档求&#20540;时,需要使用XPathNSResolver对象。
evaluate(expression.context,nsresolver,type,result):在给定的上下文中基于特定的命名空间信息来对XPath求&#20540;,剩下的参数指定如何返回结果。
这几个方法中,evaluate方法最常用。这个方法接收5个参数:XPath表达式,上下文节点,命名空间求解器,返回结果的类型和保存结果的XPathResult对象(通常是null,因为结果会以函数&#20540;的形式返回)。第三个参数宅在XML代码中使用了XML命名空间时有必要指定,如果没使用,设置为null。第四个参数的的取&#20540;范围是下列的常量之一:
XPathResult.ANY_TYPE:返回与XPath表达式匹配的数据类型
XPathResult.NUMBER_TYPE:数字
XPathResult.STRING_TYPE:字符串
XPathResult.BOOLEAN_TYPE:布尔&#20540;
XPathResult.UNORDERED_NODE_ITERATOR_TYPE:无序的匹配节点集合
XPathResult.ORDERED_NODE_ITERATOR_TYPE:有序的节点匹配集合
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE:无序的匹配节点快照集合
XPathResult.ORDERD_NODE_SNAPSHOT_TYPE:有序的匹配节点快照集合
XPathResult.ANY_UNORDERED_NODE_TYPE:返回匹配的节点集合,顺序会与原文不一定一致。
XPathResult.FIRST_ORDERED_NODE_TYPE:返回一个节点的集合
指定的结果类型决定了如何取得结果的&#20540;。
var result=xmldom.evaluate(&employee/name&,xmldom.documentElement,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);
if(result!=null){
& &var node=result.iterateNext();
& &while(node){
&& & alert(node.tagName);
&node=node.iterateNext();
如果指定的是快照结果类型,就必须使用snapshotItem()方法和snapshotLength属性。
var result=xmldom.evaluate(&employee/name&,xmldom.documentElement,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
if(result!=null){
& for(var i=0,len=result.snapshotLi&i&#43;&#43;){
&& &alert(result.snapshotItem(i).tagName);&
单节点的结果可以通过singleNodeValue属性来访问该节点。
简单类型的结果分别会通过booleanValue,numberValue,stringValue来访问。
对使用命名空间的XML求&#20540;的方法:
1.通过createNSResolver(node)方法来创建XPathNSResolver对象,然后再使用evaluate()方法来获取结果
var nsresolver=xmldom.createNSResolver(xmldom.documentElement);
var result=xmldom.evaluate(&wrox:book/wrox:author&,xmldom.documentElement,nsresolver,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
alert(result.snapshotLength);
2.定义一个函数,让它接收一个命名空间前缀,返回关联的URI
var neresolver=function(prefix){
&& &switch(prefix){
&&case &wrox&: return &/&;
&&//其他前缀
var result=xmldom.evaluate(&count(wrox:book/wrox/author)&,xmldom.documentElement,nsresolver,XPathResult.NUMBER_TYPE,null);
alert(result.numberValue);
IE中的XPath
IE对XPath的支持是内置在基于ActiveX的XML DOM文档对象中的。在这个操作XPath的接口中有两个方法:selectSingleNode()和selectNodes()。其中selectSingleNode()方法接收一个XPath模式,在找到的匹配中返回第一个匹配节点,如果没有返回null。
var element=xmldom.documentElement.selectSingleNode(&employee/name&);
if(element!=null){
& &alert(element.xml);
另一个方法selectNodes()也接收一个XPath模式,但是它返回与模式匹配的所有节点的NodeList。如果没找到匹配的,返回一个包含零项的NodeList.
var elements=xmldom.documentElement.selectNodes(&employee/name&);
alert(elements.length);
IE对命名空间的支持
下面是对要操作的XML DOM设置命名空间的方法:
xmldom.setproperty(&SelectionNamespaces&,&xmlns='/'&);
var result=xmldom.documentElement.selectNodes(&wrox:book/wrox:author&);
alert(result.length);
跨浏览器使用XPath
第一个跨浏览器的方法是selectSingleNode(),接收三个参数:上下文节点,XPath表达式,可选的命名空间
function selectSingleNode(context,expression,namespace){
& &var doc=(context.nodeType!=9?context.ownerDocument:context);
& &if(typeof doc.evaluate!=&umdefined&){
&&var nsresolver=
&&if(namespace instanceof Object){
&nsresolver=function(prefix){
&& &return namespace[prefix];
&&var result=doc.evaluate(expression,context,nsresolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null);
&&return (result!==null?result.singleNodeValue:null);
& &}else if(typeof context.selectSingleNode!=&undefined&){
&&if(namespace instanceof Object){
var ns=&&;
for(var prefix in namespace){
&& if(namespaces.hasOwnProperty(prefix)){
&&ns&#43;=&xmlns:&&#43;prefix&#43;&='&&#43;namespaces[prefix]&#43;&' &; &&
doc.setProperty(&SelectionNamespaces&:ns);
&&return context.selectSingleNode(expression);
&&throw new Error(&no XPath engine found&); &&
下面是这个函数的使用示例:
var result=selectSingleNode(xmldom.documentElement,&wrox:book/wrox:author&,{wrox:&/&});
alert(serializeXml(result));
下面的函数是跨浏览器封装的selectNodes()函数,这个函数接收与上一个函数有相同的三个参数。
function selectNodes(context,expression,namespace){
& &var doc=(context.nodeType!=9?context.ownerDocument:context);
& &if(typeof doc.evaluate!=&umdefined&){
&&var nsresolver=
&&if(namespace instanceof Object){
&nsresolver=function(prefix){
&& &return namespace[prefix];
&&var result=doc.evaluate(expression,context,nsresolver,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
&&var nodes=new Array();
&&if(result!==null){
&for(var i=0,len=result.snapshotLi&i&#43;&#43;){
&& & nodes.push(result.snapshotItem(i));
& &}else if(typeof context.selectSingleNode!=&undefined&){
&&if(namespace instanceof Object){
var ns=&&;
for(var prefix in namespace){
&& if(namespace.hasOwnProperty(prefix)){
&&ns&#43;=&xmlns:&&#43;prefix&#43;&='&&#43;namespaces[prefix]&#43;&' &; &&
doc.setProperty(&SelectionNamespaces&:ns);
&&var result=context.selectNodes(expression);
&&var nodes=new Array();
&&for(var i=0,len=result.i&i&#43;&#43;){
&nodes.push(result[i]); &
&&throw new Error(&no XPath engine found&); &&
下面是selectNodes()方法的使用示例:
var result=selectNodes(xmldom.documentElement,&wrox:book/wrox:author&,{wrox:&/&});
alert(result.length);
浏览器对XSTL的支持
它不是一种正式的规范,,是XPath的另一表现形式。IE是第一个支持它的。
简单的XSTL转换XML文档的方式就是将它们分别加到一个DOM文档中,然后使用transformNode()方法。这个方法接收一个参数,即包含XSTL样式表的文档。调用这个方法之后会返回一个包含转换信息的字符串。
xmldom.load(&employees.xml&);
xstldom.load(&employees.xstl&);
var result=xmldom.transformNodes(xstldom);
这个transformNode的参数可以是XML文档的DOM节点。如果不是在文档元素上调用transformNode,那么转换就会从调用节点上开始。
复杂的XSTL转换
要使用复杂的XSTL转换,必须使用XSL模板和XSL处理器。先要把XSTL样式表加载到一个线程安全的XML文档中。
function createThreadSafeDocument(){
& & if(typeof arguments.callee.activeXString!=&string&){
&& var versions=[&MSXML2.FreeThreadedDOMDocument.6.0&,&MSXML2.FreeThreadedDOMDocument.3.0&,&MSXML2.FreeThreadedDOMDocument&],i,
&& for(i=0,len=versions.i&i&#43;&#43;){
&&new ActiveXObject(versions[i]);
&&arguments.callee.activeXString=versions[i];
&& }catch(ex){
&//skip &&
return new ActiveXObject(arguments.callee.activeXString);
创建XSTL模板:
function createXSTLTemplate(){
& & if(typeof arguments.callee.activeXString!=&string&){
&& &var versions=[&MSXML2.FreeThreadedDOMDocument.6.0&,&MSXML2.FreeThreadedDOMDocument.3.0&,&MSXML2.FreeThreadedDOMDocument&],i,
for(i=0,len=versions.i&i&#43;&#43;){
&&new ActiveXObject(versions[i]);
&&arguments.callee.activeXString=versions[i];
&&}catch(ex){
return new ActiveXObject(arguments.callee.activeXString);
下面是使用示例:
var xsltdom=createThreadSafeDocument();
xstldom.async=
xsltdom.load(&employees.xslt&);
var template=createXSTLTemplate();
template.stylesheet=
var processor=tempalte.createProcessor();
processor.input=
processor.transform();
var result=processor.
在创建了XSL处理器之后,必须将要转换的节点指定给input属性。这个&#20540;可以是一个文档,也可以是文档的任何节点。然后调用transform方法即可执行转换并将结果作为字符串保存在output属性中。这些代码实现了transformNode相同的功能。使用XSL处理器可以对转换进行更多的控制,同时也支持更高级的XSTL特性。
要将样式表中的参数进行赋&#20540;处理,可以使用addParaneter()方法,它接收两个参数:要设置的参数名称和要指定的&#20540;。
processor.input=xmldom.documentE
processor.addParameter(&message&,&Hello wrold!&);
processor.transform();
XSL处理器的另一个高级特性是能够设置一种操作模式。在XSTL中,可以使用mode特性为模板定义一种模式在定义了模式之后,如果没有将&xsl:apply-tempaltes&与匹配的mode特性一起使用,就不会运行该模板。如果在&xsl:apply-tempaltes&元素的模式设置为“title-first”,那么在javascript使用时就需要像下面这样进行设置:
processor.input=
processor.addParameter(&message&,&Hello wrold!&);
processor.setStartMode(&title-first&);
processor.transform();
如果打算用一个XSTL样式表进行多次转换,可以在每次转换之后调用reset()方法重置处理器。
processor.reset();
因为处理器已经编译了XSTL样式表,与transformNode()相比,这样的转换速度会更快一些
XSLTProcessor类型
Mozilla通过火狐创建新类型,其他非IE浏览器借鉴了它,也实现了这个类型。主要的功能是用来将XSLT转换为XML文档。
第一步加载DOM文档,一个基于XML,另一个基于XSLT。然后创建一个新XSLTProceesor对象,并使用importStylesheet()方法为其指定一个XSLT。示例:
var processor=new XSLTProcessor();
processor.importStylesheet(xsltdom);
最后一步是执行转换。这一步有两种不同的方式:如果想返回一个完整的DOM文档,可以调用transformToDocument();如果想返回一个文档片段,可以使用transformToFragment()。transformToDocument()的参数是一个XML DOM。transformToFragment()的参数有两个,第一个是XML DOM,第二个是拥有该文档片段的文档。
setParameter()方法可以用来设置XSLT的参数,该方法接收三个参数:命名空间URI,参数的内部名称和要设置的&#20540;。这个方法必须在进行最后一步转化之前调用。
getParameter()方法用于取得当前参数的&#20540;,参数为命名空间URI和参数的内部名称。
removeParameter()方法用于移除当前参数的&#20540;,参数为命名空间URI和参数的内部名称。
后面两个方法并不常用,提供他们只是为了方便。
重置处理器的方法是reset()方法。
跨浏览器使用XSLT
function transform(context,xslt){
& & if(typeof XSLTProcessor!=&undefined&){
&& var processor=new XSLTProcessor();
&& processor.importStylesheet(xslt);
&& var result=processor.transformToDocument(context);
&& return (new XMLSerializer()).serializeToString(result);
}else if(typeof context.transformNode!=&undefined&){
&& return caontext.transformNode(xslt);
&& throw new Error(&No XSLT processor available.&);
这个函数接收两个参数:要执行转换的上下文节点和XSLT文档对象。返回序列化之后的字符串。
var result=transform(xmldom,xsltdom);
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:83736次
积分:1885
积分:1885
排名:第11790名
原创:98篇
转载:16篇
(4)(7)(4)(1)(1)(4)(2)(1)(2)(3)(1)(1)(5)(16)(4)(2)(9)(6)(14)(2)(12)(4)(2)(8)(8)}

我要回帖

更多关于 getelementsbytagname 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信