获得指定对象下的指定名称对象集合
程序员文章站
2022-05-24 20:07:50
...
这篇是纯属给朋友帮忙了,他要获得一个 TABLE 内不同 TD 下name值相同的span,问我getElementsByName咋取不到,按我的经验getElementsByName只能取同名的表单元素,所以写了个小递归逐级向下寻找,找到的话就push进数组,本例并没有经过严格测试,有类似需要的朋友请自行修改。如果使用框架的话有另外的写法,这里没有使用框架,就是一个小函数。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/> </HEAD> <BODY> <TABLE id='mytable' border='1' width='200'> <TR><TD><span name='sortspan'>11<span name='sortspan'>66</span></span></TD></TR> <TR><TD><span name='sortspan'>22</span></TD></TR> <TR><TD><span name='sortspan'>33</span></TD></TR> <TR><TD><span name='sortspan'>44</span></TD></TR> <TR><TD><span name='sortspan'>55</span></TD></TR> </TABLE> <SCRIPT LANGUAGE="JavaScript"> <!-- var mytable = document.getElementById('mytable'); var subArr = []; /** * 获得指定对象下的指定名称对象集合,递归 * * @param arr 最终要返回的数组对象 * @param container 容器对象 * @param subName 子对象名称 */ function getObjs(arr, container, subName){ // 如果当前对象没有子对象则返回空 if(!container.childNodes) return null; // 取得当前对象的子对象 var subs = container.childNodes; // 循环子对象集合 for(var i=0,j=subs.length;i<j;i++){ if(!subs[i] || subs[i].nodeType!=1){ continue; } if(subs[i].name==subName){ arr.push(subs[i]) }else if(subs[i].childNodes || subs[i].childNodes.length!=0){ } getObjs(arr, subs[i], subName); } } // 在这里得到对象集合,存在subArr中 getObjs(subArr, mytable, "sortspan"); alert("最终得到对象长度:"+subArr.length) var msg = []; // 这里alert所获得的所有对象的innerHTML for(var i=0,j=subArr.length;i<j;i++){ msg.push(subArr[i].innerHTML) } alert("最终获得的所有对象的innerHTML:\n\n"+msg.join("\n")) //--> </SCRIPT> </BODY> </HTML>
推荐阅读
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间,_PHP教程
-
【转载】C#中ArrayList集合类使用Remove方法指定元素对象
-
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
-
用DOM实现文章采集--通过jquery语法式的方法采集指定对象的文本
-
重新编译PLSQL中的无效对象或者指定的对象 的方法
-
js对象的方法有哪些(js删除table指定行)
-
js对象的方法有哪些(js删除table指定行)
-
C#检查指定对象是否存在于ArrayList集合中的方法
-
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
-
Jquery 获取指定标签的对象及属性的设置与移除