下面的代码,用我自己写的方法getByclass同样可以取到包含16个元素的数组,但是不能得到属性值width,显示错误Cannot read property 'width' of undefined,如果把自己写的方法换成getElementsNameByTagName("div"),就可以取到宽度值50px,不懂为什么。麻烦大神帮看看,谢谢了~~ <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html" charset="utf-8"><title></title><style>div,p,ul,li{margin:0;padding:0;}li{list-style: none;}a{text-decoration:none;}div{position: relative;}body{}.redCube{width:50px;height: 50px;background: red;position: absolute;}#s{width: 100px;height: 100px;background: blue;}</style><script>window.onload=function(){var b = document.getElementById("s");var str = "";for(var i=0;i<16;i++){str += "<div class='cube' style='width:50px;height: 50px;background: red;position: absolute;left:"+i*70+"px;' ></div>"; }document.body.innerHTML=str;var timer = null;var num = 0;var oCubes = getByClass(document,"cube");alert(oCubes[0].style.width); }; function getStyle(obj,attr){return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj,null)[attr];};function getByClass(obj,Name){var arr = [];obj= obj?obj:document; var aElement = obj.getElementsByTagName('*');for(var i=0;i<aElement.length;i++){if(aElement[i].className==Name){arr.push(obj);} } return arr;};</script></head><body></body></html>
3 回答
这都不会
TA贡献72条经验 获得超92个赞
下次用代码模式兄弟,看得我眼都快瞎了。
我估计你也是一时疏忽,其实很简单,是个手误。问题出在getByClass中的
if(aElement[i].className==Name){ arr.push(obj); }
应该是
if(aElement[i].className==Name){ arr.push(aElement[i]); }
把这个标签本身添加进数组,而不是把obj添加进数组,obj是document,并没有改变。、
如果满意请采纳~
添加回答
举报
0/150
提交
取消