|
DC大神为早期不支持getElementsByTagName的浏览器写的hack,当然与原生的不能同日而言,原生的用到缓存机制呢。
复制代码 代码如下: function getElementsByTagName(node, tagName) { var elements = [], i = 0, anyTag = tagName === "*", next = node.firstChild; while ((node = next)) { if (anyTag ? node.nodeType === 1 : node.nodeName === tagName) elements[i++] = node; next = node.firstChild || node.nextSibling; while (!next && (node = node.parentNode)) next = node.nextSibling; } return elements; };
定义和用法 getElementsByTagName() 方法可返回带有指定标签名的对象的集合。 语法 document.getElementsByTagName(tagname) 说明 getElementsByTagName() 方法返回元素的顺序是它们在文档中的顺序。 如果把特殊字符串 "*" 传递给 getElementsByTagName() 方法,它将返回文档中所有元素的列表,元素排列的顺序就是它们在文档中的顺序。 提示和注释 注释:传递给 getElementsByTagName() 方法的字符串可以不区分大小写。 实例 例子 1 复制代码 代码如下: <html> <head> <script type="text/javascript"> function getElements() { var x=document.getElementsByTagName("input"); alert(x.length); } </script> </head> <body> <input name="myInput" type="text" size="20" /><br /> <input name="myInput" type="text" size="20" /><br /> <input name="myInput" type="text" size="20" /><br /> <br /> <input type="button" onclick="getElements()" value="How many input elements?" /> </body> </html> 例子 2 可以用 getElementsByTagName() 方法获取任何类型的 HTML 元素的列表。例如,下面的代码可获取文档中所有的表: 复制代码 代码如下: var tables = document.getElementsByTagName("table"); alert ("This document contains " + tables.length + " tables"); 例子 3 如果您非常了解文档的结构,也可以使用 getElementsByTagName() 方法获取文档中的一个特定的元素。例如,下面的代码可以获得文档中的第四个段落: var myParagragh = document.getElementsByTagName("p")[3]; 不过,我们还是认为,如果您需要操作某个特定的元素,使用 getElementById() 方法将更为有效。 |
|