为了账号安全,请及时绑定邮箱和手机立即绑定

帮忙看一下非常感谢,实在不懂为什么用class名取出来的元素,没办法取到属性值?

帮忙看一下非常感谢,实在不懂为什么用class名取出来的元素,没办法取到属性值?

EverDream3726731 2018-02-27 11:48:33
下面的代码,用我自己写的方法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,并没有改变。、

如果满意请采纳~

查看完整回答
1 反对 回复 2018-02-27
?
hello_world_mk

TA贡献13条经验 获得超2个赞

你这是在练习啥??

查看完整回答
反对 回复 2018-03-02
?
幕布斯0246692

TA贡献2条经验 获得超0个赞

同上兄弟~

查看完整回答
反对 回复 2018-02-27
  • 3 回答
  • 0 关注
  • 1389 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信