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

下面的代码,用我自己写的方法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>


EverDream3726731
浏览 1412回答 3
3回答

这都不会

下次用代码模式兄弟,看得我眼都快瞎了。我估计你也是一时疏忽,其实很简单,是个手误。问题出在getByClass中的if(aElement[i].className==Name){     arr.push(obj); }应该是if(aElement[i].className==Name){     arr.push(aElement[i]); }把这个标签本身添加进数组,而不是把obj添加进数组,obj是document,并没有改变。、如果满意请采纳~

hello_world_mk

你这是在练习啥??

幕布斯0246692

同上兄弟~
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript