+ -
当前位置:首页 → 问答吧 → getElementsByTagName 如何快速查找所需对象

getElementsByTagName 如何快速查找所需对象

时间:2011-10-17

来源:互联网

比如
<div name="s1"></div>
<div name="s2"></div>
<div name="s3"></div>
<div name="s12"></div>
<div name="s23"></div>
<div name="s56"></div>
<div name="s2dd"></div>
<div name="s2sd"></div>
............

有很多的无规则div,多到你也分辨不出来到底有多少了,,

不能使用id,用getElementsByTagName,如何操作可以快速找到name是s12的div,点击弹出hello???

作者: xjl756425616   发布时间: 2011-10-17

最好是不要循环,,有没有便捷方法,,如果实在不行就循环了。。

作者: xjl756425616   发布时间: 2011-10-17

用jquery咯,$('[name=s12]').click(function(){alert('hello')}),记得头上加jq引用

作者: ycmjh2010   发布时间: 2011-10-17

引用 2 楼 ycmjh2010 的回复:

用jquery咯,$('[name=s12]').click(function(){alert('hello')}),记得头上加jq引用


貌似是好方法,就是学了节点处理之后,感觉平常用的开发知识没必要加载个庞大的jquery库,

作者: xjl756425616   发布时间: 2011-10-17

好吧。同学,jQ里面也是遍历.
HTML code

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>测试用页面</title>

</head>

<body>
<div name="aa">I'm aa</div>
<div name="bb">I'm bb</div>

<script>
function $$(parentNode,tagName){
    if(!tagName&&typeof(parentNode)=='string')tagName = parentNode;
    if(typeof(parentNode)!='object')parentNode = document;
    if(/^\w*\[[\w-]+=[\w-\/\\]+\]$/.test(tagName)){
        var match = tagName.match(/^(\w*)\[([\w-]+=[\w-\/\\]+)\]$/,'$1'),
            tagName = match[1],
            filter = match[2].split('='),
            nodes = parentNode.getElementsByTagName(tagName||'*'),
            result = [];
        for(var i=0,j=nodes.length;i<j;i++)
            if(nodes[i].getAttribute(filter[0])==filter[1])result.push(nodes[i]);
        return result;
    };
    for(var i=0,nodes = (parentNode.getElementsByTagName(tagName)||[]),j=nodes.length,res=[];i<j;i++)res.push(nodes[i]);
    return res;
}
onload = function(){
    alert($$('div[name=aa]')[0].innerHTML)
}

</script>

</body>

</html>

作者: Crazywa   发布时间: 2011-10-17

楼上说出了残酷的事实,楼主节哀。

作者: ycmjh2010   发布时间: 2011-10-17

document.getElementsByName

作者: lvbang_lzt   发布时间: 2011-10-17

如果你什么也不知道的话,不管最终的表现形式如何,最终都是进行了遍历来获取的。除非你能有唯一确定它的标识,比如唯一的name,id,class什么的,

作者: lvbang_lzt   发布时间: 2011-10-17

6楼的同学。
getElementsByName只能获取表单元素...

作者: Crazywa   发布时间: 2011-10-17

楼主啊,,只能用遍历啊,没原生的api

作者: liangws   发布时间: 2011-10-17

有个document.getElementsByName(),不过IE不支持,如果要在IE下用,只能循环JScript code
var divs = document.getElementsByTagName('div');
var div = getElementsByName('s12', divs)[0];
function getElementsByName(name, containers){
    var array = [];
    for(var i in containers){
        var elem = containers[i];
        if(elem.name === name){
            array.push(elem);
        }
    }
    return array;
}

作者: axiheyhey   发布时间: 2011-10-17