无为清净楼资源网 Design By www.qnjia.com
当然这些选择器都是jQuery扩展的一些方法,那么使用原生js时要怎样来查找元素呢?今天就来简单梳理下。
DOM定义了多种查找元素的方法,除了我们常用的getElementById(),还有getElementsByTagName()和getElementsByName()。使用这几种方法方法我们可以查找html文档中的任意html元素。
getElementById()
首先来看下getElementById(),这个方法很简单,只需在参数中传入html标签的id属性值即可,由于html页面中的id具有唯一性,因此该方法返回的是单个元素对象。例如:
复制代码 代码如下:
<span id="span1">span标签</span>
<script>
var oSpan = document.getElementById('span1'); //查找span元素
alert(oSpan.innerHTML); //弹出span标签中的内容
</script>
getElementsByTagName()
getElementsByTagName()参数需传入的是一个html标签名,它返回的是html文档中所有与之匹配的元素列表,这个列表具有部分数组的特性,因此也称其为类数组。当我们想操作某个特定的元素时,我们可以使用数组索引或item()来实现,例如:
复制代码 代码如下:
<script>
var oDiv = document.getElementsByTagName('div'); //查找所有div元素,返回一个元素列表
/* 操作特定元素 */
alert(oDiv[0].innerHTML) //弹出第一个div中的内容
alert(oDiv.item(1).innerHTML) //弹出第二个div中的内容
</script>
当然我们还可以通过length属性来循环遍历节点:
复制代码 代码如下:
<script>
var oDiv = document.getElementsByTagName('div');
for(var i = 0; i < oDiv.length; i++){
//do something
}
</script>
getElementsByName()
getElementsByName()常用来查找表单元素,参数中传入html标签的name属性值,由于文档中多个html标签的name值可能相同(如单选按钮),因此该方法返回的也是一个元素列表。具体操作方法与getElementsByTagName()类似,这里不在赘述。
复制代码 代码如下:
<script>
var oIpt= document.getElementsByName('city'); //查找name值为city的元素
alert(oIpt[0].value);
alert(oIpt.item(1).value);
</script>
getByClass()
虽然使用上面的几种方法已经可以满足常见需求,但是为了更方便的访问元素节点,我们一般会自己封装一个通过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需传入两个参数,其中oParent为参考节点,即在oParent节点中查找元素,sClass为要查找的元素class的值。通过循环将oParent内的html标签的class值与传入的sClass值一一对比,符合条件的会存入到数组aResult中,最后再返回这个数组。
另外这里之所以用正则来匹配而没有直接用aEle[i].className == sClass,是避免标签的class值为多个时,出现匹配失效的情况。
DOM定义了多种查找元素的方法,除了我们常用的getElementById(),还有getElementsByTagName()和getElementsByName()。使用这几种方法方法我们可以查找html文档中的任意html元素。
getElementById()
首先来看下getElementById(),这个方法很简单,只需在参数中传入html标签的id属性值即可,由于html页面中的id具有唯一性,因此该方法返回的是单个元素对象。例如:
复制代码 代码如下:
<span id="span1">span标签</span>
<script>
var oSpan = document.getElementById('span1'); //查找span元素
alert(oSpan.innerHTML); //弹出span标签中的内容
</script>
getElementsByTagName()
getElementsByTagName()参数需传入的是一个html标签名,它返回的是html文档中所有与之匹配的元素列表,这个列表具有部分数组的特性,因此也称其为类数组。当我们想操作某个特定的元素时,我们可以使用数组索引或item()来实现,例如:
复制代码 代码如下:
<script>
var oDiv = document.getElementsByTagName('div'); //查找所有div元素,返回一个元素列表
/* 操作特定元素 */
alert(oDiv[0].innerHTML) //弹出第一个div中的内容
alert(oDiv.item(1).innerHTML) //弹出第二个div中的内容
</script>
当然我们还可以通过length属性来循环遍历节点:
复制代码 代码如下:
<script>
var oDiv = document.getElementsByTagName('div');
for(var i = 0; i < oDiv.length; i++){
//do something
}
</script>
getElementsByName()
getElementsByName()常用来查找表单元素,参数中传入html标签的name属性值,由于文档中多个html标签的name值可能相同(如单选按钮),因此该方法返回的也是一个元素列表。具体操作方法与getElementsByTagName()类似,这里不在赘述。
复制代码 代码如下:
<script>
var oIpt= document.getElementsByName('city'); //查找name值为city的元素
alert(oIpt[0].value);
alert(oIpt.item(1).value);
</script>
getByClass()
虽然使用上面的几种方法已经可以满足常见需求,但是为了更方便的访问元素节点,我们一般会自己封装一个通过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需传入两个参数,其中oParent为参考节点,即在oParent节点中查找元素,sClass为要查找的元素class的值。通过循环将oParent内的html标签的class值与传入的sClass值一一对比,符合条件的会存入到数组aResult中,最后再返回这个数组。
另外这里之所以用正则来匹配而没有直接用aEle[i].className == sClass,是避免标签的class值为多个时,出现匹配失效的情况。
标签:
javascript,查找元素
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
更新日志
2024年11月18日
2024年11月18日
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】