javascript基礎(chǔ)之查找元素的詳細介紹(訪問節(jié)點)
更新時間:2013年07月05日 15:26:38 作者:
常用jQuery的話我們知道,jQuery有非常強大的選擇器來查找元素(也稱作訪問節(jié)點),例如:基本選擇器、層次選擇器、過濾選擇器、屬性選擇器等
當然這些選擇器都是jQuery擴展的一些方法,那么使用原生js時要怎樣來查找元素呢?今天就來簡單梳理下。
DOM定義了多種查找元素的方法,除了我們常用的getElementById(),還有g(shù)etElementsByTagName()和getElementsByName()。使用這幾種方法方法我們可以查找html文檔中的任意html元素。
getElementById()
首先來看下getElementById(),這個方法很簡單,只需在參數(shù)中傳入html標簽的id屬性值即可,由于html頁面中的id具有唯一性,因此該方法返回的是單個元素對象。例如:
<span id="span1">span標簽</span>
<script>
var oSpan = document.getElementById('span1'); //查找span元素
alert(oSpan.innerHTML); //彈出span標簽中的內(nèi)容
</script>
getElementsByTagName()
getElementsByTagName()參數(shù)需傳入的是一個html標簽名,它返回的是html文檔中所有與之匹配的元素列表,這個列表具有部分數(shù)組的特性,因此也稱其為類數(shù)組。當我們想操作某個特定的元素時,我們可以使用數(shù)組索引或item()來實現(xiàn),例如:
<script>
var oDiv = document.getElementsByTagName('div'); //查找所有div元素,返回一個元素列表
/* 操作特定元素 */
alert(oDiv[0].innerHTML) //彈出第一個div中的內(nèi)容
alert(oDiv.item(1).innerHTML) //彈出第二個div中的內(nèi)容
</script>
當然我們還可以通過length屬性來循環(huán)遍歷節(jié)點:
<script>
var oDiv = document.getElementsByTagName('div');
for(var i = 0; i < oDiv.length; i++){
//do something
}
</script>
getElementsByName()
getElementsByName()常用來查找表單元素,參數(shù)中傳入html標簽的name屬性值,由于文檔中多個html標簽的name值可能相同(如單選按鈕),因此該方法返回的也是一個元素列表。具體操作方法與getElementsByTagName()類似,這里不在贅述。
<script>
var oIpt= document.getElementsByName('city'); //查找name值為city的元素
alert(oIpt[0].value);
alert(oIpt.item(1).value);
</script>
getByClass()
雖然使用上面的幾種方法已經(jīng)可以滿足常見需求,但是為了更方便的訪問元素節(jié)點,我們一般會自己封裝一個通過class來查找元素的方法:
<script>
/** getByClass **/
function getByClass(oParent, sClass){
var aEle = oParent.getElementsByTagName('*');
var re = new RegExp('\\b' + sClass + '\\b');
var aResult = [];
for(var i = 0; i < aEle.length; i++){
if(re.test(aEle[i].className)){
aResult.push(aEle[i]);
}
}
return aResult;
}
</script>
getByClass需傳入兩個參數(shù),其中oParent為參考節(jié)點,即在oParent節(jié)點中查找元素,sClass為要查找的元素class的值。通過循環(huán)將oParent內(nèi)的html標簽的class值與傳入的sClass值一一對比,符合條件的會存入到數(shù)組aResult中,最后再返回這個數(shù)組。
另外這里之所以用正則來匹配而沒有直接用aEle[i].className == sClass,是避免標簽的class值為多個時,出現(xiàn)匹配失效的情況。
DOM定義了多種查找元素的方法,除了我們常用的getElementById(),還有g(shù)etElementsByTagName()和getElementsByName()。使用這幾種方法方法我們可以查找html文檔中的任意html元素。
getElementById()
首先來看下getElementById(),這個方法很簡單,只需在參數(shù)中傳入html標簽的id屬性值即可,由于html頁面中的id具有唯一性,因此該方法返回的是單個元素對象。例如:
復制代碼 代碼如下:
<span id="span1">span標簽</span>
<script>
var oSpan = document.getElementById('span1'); //查找span元素
alert(oSpan.innerHTML); //彈出span標簽中的內(nèi)容
</script>
getElementsByTagName()
getElementsByTagName()參數(shù)需傳入的是一個html標簽名,它返回的是html文檔中所有與之匹配的元素列表,這個列表具有部分數(shù)組的特性,因此也稱其為類數(shù)組。當我們想操作某個特定的元素時,我們可以使用數(shù)組索引或item()來實現(xiàn),例如:
復制代碼 代碼如下:
<script>
var oDiv = document.getElementsByTagName('div'); //查找所有div元素,返回一個元素列表
/* 操作特定元素 */
alert(oDiv[0].innerHTML) //彈出第一個div中的內(nèi)容
alert(oDiv.item(1).innerHTML) //彈出第二個div中的內(nèi)容
</script>
當然我們還可以通過length屬性來循環(huán)遍歷節(jié)點:
復制代碼 代碼如下:
<script>
var oDiv = document.getElementsByTagName('div');
for(var i = 0; i < oDiv.length; i++){
//do something
}
</script>
getElementsByName()
getElementsByName()常用來查找表單元素,參數(shù)中傳入html標簽的name屬性值,由于文檔中多個html標簽的name值可能相同(如單選按鈕),因此該方法返回的也是一個元素列表。具體操作方法與getElementsByTagName()類似,這里不在贅述。
復制代碼 代碼如下:
<script>
var oIpt= document.getElementsByName('city'); //查找name值為city的元素
alert(oIpt[0].value);
alert(oIpt.item(1).value);
</script>
getByClass()
雖然使用上面的幾種方法已經(jīng)可以滿足常見需求,但是為了更方便的訪問元素節(jié)點,我們一般會自己封裝一個通過class來查找元素的方法:
復制代碼 代碼如下:
<script>
/** getByClass **/
function getByClass(oParent, sClass){
var aEle = oParent.getElementsByTagName('*');
var re = new RegExp('\\b' + sClass + '\\b');
var aResult = [];
for(var i = 0; i < aEle.length; i++){
if(re.test(aEle[i].className)){
aResult.push(aEle[i]);
}
}
return aResult;
}
</script>
getByClass需傳入兩個參數(shù),其中oParent為參考節(jié)點,即在oParent節(jié)點中查找元素,sClass為要查找的元素class的值。通過循環(huán)將oParent內(nèi)的html標簽的class值與傳入的sClass值一一對比,符合條件的會存入到數(shù)組aResult中,最后再返回這個數(shù)組。
另外這里之所以用正則來匹配而沒有直接用aEle[i].className == sClass,是避免標簽的class值為多個時,出現(xiàn)匹配失效的情況。
您可能感興趣的文章:
- JS 使用for循環(huán)遍歷子節(jié)點查找元素
- js查找父節(jié)點的簡單方法
- javascript下查找父節(jié)點的簡單方法
- js查找節(jié)點的方法小結(jié)
- JS常見DOM節(jié)點操作示例【創(chuàng)建 ,插入,刪除,復制,查找】
- js遍歷子節(jié)點子元素附屬性及方法
- javascript 節(jié)點遍歷函數(shù)
- JS獲取子節(jié)點、父節(jié)點和兄弟節(jié)點的方法實例總結(jié)
- javascript獲取網(wǎng)頁中指定節(jié)點的父節(jié)點、子節(jié)點的方法小結(jié)
- javascript得到XML某節(jié)點的子節(jié)點個數(shù)的腳本
- JS查找孩子節(jié)點簡單示例
相關(guān)文章
jquery和javascript的區(qū)別(常用方法比較)
jquery 就對javascript的一個擴展,封裝,就是讓javascript更好用,更簡單,為了說明區(qū)別,下面與大家分享下JavaScript 與JQuery 常用方法比較2013-07-07怎么通過onclick事件獲取js函數(shù)返回值(代碼少)
這篇文章主要介紹了怎么通過onclick事件獲取js函數(shù)返回值,需要的朋友可以參考下2015-07-07javascript學習筆記(二) 鼠標經(jīng)過時,改變div塊的背景色的代碼
javascript學習筆記(二) 鼠標經(jīng)過時,改變div塊的背景色的實現(xiàn)代碼,當然也可以用css實現(xiàn)。2011-04-04JavaScript中使用Math.floor()方法對數(shù)字取整
這篇文章主要介紹了JavaScript中使用Math.floor()方法對數(shù)字取整,是JS入門學習中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06