i modified a version of the javascript function getElementsByAttribute(),it used like "getElementsByTagName()",copy these code below to your html page can see the effect.
<head> <script> function getElementByAttribute(aAttribute,aValue,abody){ var Elements=[], sfunc='return Element.'+aAttribute+'=="'+aValue+'"?true:false;'; SearchElement( !!abody?abody:document.body ); return Elements; function ElementVerifier(ele){ Element=ele; if(Element.nodeName=='#text') return false; return eval('Element.'+aAttribute+'=="'+aValue+'"?true:false;'); } function SearchElement(ele){ if(!ele) return; if(ElementVerifier(ele)) Elements.push(ele); SearchElement(ele.firstChild); SearchElement(ele.nextSibling); } } function test(){ var foundElements=getElementByAttribute('style.width','100px'); alert(foundElements.length); foundElements=getElementByAttribute('tagName','DIV',document.body); alert(foundElements.length); foundElements=getElementByAttribute('className','test-'); alert(foundElements.length); } </script> <style>.test{}</style> </head> <body onload="test();"> <div style="width:100px">Test</div> <div style="width:100px">Test</div> <div class="test">Test</div> </body>
注:这是我优化了一个外国人的方法,javascript只有三种getElemnet方法(getElemntById,getElemntsByName,getElementsByTagName),但有时候我们的需求更多所以就自己编写了一些方法,就比如这个getElemntsByAttribute,按属性名来查找指定范围内的元素。但是速度一般,找了很多类似的方法,速度都大同小异没有什么突破。如果大家有好的想法可以和我分享!