比如
<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???

解决方案 »

  1.   

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

  2.   


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

  3.   

    好吧。同学,jQ里面也是遍历.<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>
      

  4.   

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

  5.   

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

  6.   

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

  7.   

    有个document.getElementsByName(),不过IE不支持,如果要在IE下用,只能循环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;
    }