1. 程式人生 > >getElementByID getElementsByName getElementsByTagName的區別和總結 +js+Mxl+xmlhttp

getElementByID getElementsByName getElementsByTagName的區別和總結 +js+Mxl+xmlhttp

 WEB標準下可以通過getElementById(), getElementsByName(), and getElementsByTagName()訪問DOCUMENT中的任一個標籤:

1、getElementById()
getElementById()可以訪問DOCUMENT中的某一特定元素,顧名思義,就是通過ID來取得元素,所以只能訪問設定了ID的元素。
比如說有一個DIV的ID為docid:
<div id="docid"></div>
那麼就可以用getElementById("docid")來獲得這個元素。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ById</title>
<style type="text/css">
<!--
#docid{
height:400px;
width:400px;
background-color:#999;}
-->
</style>
</head>
<body><div id="docid" name="docname" onClick="bgcolor()"></div>
</body>
</html>
<script language="JavaScript" type="text/JavaScript">
<!--
function bgcolor(){
document.getElementById("docid").style.backgroundColor="#000"
}
-->
</script>
、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()
這個呢就是通過TAGNAME(標籤名稱)來獲得元素,一個DOCUMENT中當然會有相同的標籤,所以這個方法也是取得一個數組。
下面這個例子有兩個DIV,可以用getElementsByTagName("div")來訪問它們,用getElementsByTagName("div")[0]訪問第一個DIV,用

getElementsByTagName("div")[1]訪問第二個DIV。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Byname,tag</title>
<style type="text/css">
<!--
#docid1,#docid2{
margin:10px;
height:400px;
width:400px;
background-color:#999;}
-->
</style>
</head>
<body>
<div name="docname" id="docid1" onClick="bgcolor()"></div>
<div name="docname" id="docid2" onClick="bgcolor()"></div>
</body>
</html>
<script language="JavaScript" type="text/JavaScript">
<!--
function bgcolor(){
var docnObj=document.getElementsByTagName("div");
docnObj[0].style.backgroundColor = "black";
docnObj[1].style.backgroundColor = "black";
}
-->
</script>
總結一下標準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("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 實體允許顯示特殊字元(如 < 字元),瀏覽器通常會將這些字元解釋為具有特殊含義。< 字元會被解釋為標誌的開頭,並且不會在頁面上顯示。若要顯示 < 字元,將需要使用實體 &lt;。

例如,如果 InnerHtml 屬性設定為 "<b> Hello </b>",則 < 和 > 字元不會分別轉換為 &lt; 和 &gt;。呈現的輸出仍將是:<b> Hello </b>。瀏覽器將檢測 <b> 標記並用粗體顯示“Hello”文字。

警告   由於未對此文字進行 HTML 編碼,因此可以在文字的 HTML 標記內嵌入指令碼。如果該屬性是使用使用者輸入動態設定的,請務必驗證它的值以減少安全漏洞。
若要提供自動 HTML 編碼和解碼,請使用 InnerText 屬性。

以上是微軟的一個網站上介紹的,而我只是簡單的認為取出來的是html格式。


2,typeName = temp.options[temp.selectedIndex].innerText;document.all("B1").innerText="關閉";name==name_other.options[i].innerText;opn.innerText=nameArray[i];

使用 InnerText 屬性以程式設計方式修改 HTML 伺服器控制元件的開始和結束標記之間的內容。

與 InnerHtml 屬性不同,InnerText 屬性自動對進出 HTML 實體的特殊字元進行編碼。HTML 實體允許顯示特殊字元(如 < 字元),瀏覽器通常會將這些字元解釋為具有特殊含義。< 字元會被解釋為標誌的開頭,並且不會在頁面上顯示。若要顯示 < 字元,將需要使用實體 &lt;。

例如,如果 InnerText 屬性設定為 "<b> Hello </b>",則 < 和 > 符號分別轉換為 &lt; 和 &gt;。呈現的輸出將是:&lt; b &gt; Hello &lt;/b &gt;。&lt; 和 &gt; 實體將向瀏覽器指示這些字元將顯示在頁上。瀏覽器將不檢測 <b> 標記並用粗體顯示該文字。顯示在頁上的文字是:<b> Hello </b>。
 

 =======================================================================
用js讀出xml中的項中。項中。。項中。的子內容

 <SCRIPT LANGUAGE="JavaScript">
 <!--
  xmlDoc=loadXMLDoc("http://www.cnblogs.com/winner/Rss.aspx"); //呼叫下面的loadxml
 //var x=xmlDoc.getElementsByTagName('title'); //得到一共有多少個title物件
  var x=xmlDoc.getElementsByTagName('item');
 // var x=b.getElementsByTagName('title');
  for (i=0;i<x.length;i++)
  {
  //document.write(x[i].childNodes[1].nodeValue) //不知道元素,則用 xmldoc.getElementsByTagName("item")[i].chileNodes[0].nodeValue表示第一項的值
  document.write(x[i].getElementsByTagName("title").item(0).text);   //心得"如果知道title指定元素則用他"
  document.write("<br />")
  }

  function loadXMLDoc(dname)
{
var xmlDoc;
// 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);
}
else
{
alert('Your browser cannot handle this script');
}
xmlDoc.async=false;
xmlDoc.load(dname);
return(xmlDoc);
}
  //-->
 </SCRIPT>


=================================================
xml+js例項

The XML file“note.xml“<?xml version="1.0" encoding="ISO8859-1" ?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

以下三組指令碼分別反映了不同的方法(容易理解)
<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>")
next
</script>
 

<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
</script>
<title>HTML using XML data</title>
</head>
<h1>Refsnes Data Internal Note</h1>
<b>To: </b><span id="to"></span>
<br>
<b>From: </b><span id="from"></span>
<hr>
<b><span id="header"></span></b>
<hr>
<span id="body"></span>
 

<script 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)
</script>