- 主题:怎样获取3个div里宽度最大的那一个呢,不想用两次循环,,,
var widtharr=new Array();
for(var i=0;i<div.length;i++){
var th=div[i].offsetWidth;
widtharr.push(th);
}
然后对widtharr进行sort排序,最大数字在最前面。
这样取数组的第一个也只是获取到的宽度数字,并不能直接获得到相应的div(的index)。
这时还要进行一次循环,再把三个div的宽度和数组第一个的宽度进行对比才能确定是哪一个。
这样就得循环两次,效率太低了,有没有一次循环就能获得相应div(的index)的办法。
谢过。
--
修改:xiatianup FROM 27.17.61.*
FROM 27.17.61.*
放两个临时变量,一个存div对象,一个存其宽度,一次遍历,就出来最大宽度div了。
你这种特征是过度API依赖症。
讲个段子:N年前毕业招聘会上,碰到一传统企业招人,现场让写排序,我说现在有sort函数,人家不信,问那个语言的那个API。
【 在 xiatianup 的大作中提到: 】
: var widtharr=new Array();
: for(var i=0;i<div.length;i++){
: var th=div[i].offsetWidth;
: ...................
--
修改:dhcn FROM 123.66.168.*
FROM 123.66.168.*
数组最大index?
用reduce?
var s = 0;
[1, 2, 3, 4, 3, 1].reduce(function (previous, current, index, array) {
if (previous < current){
s = index;
}
});
alert(s);
【 在 xiatianup (xiatianup) 的大作中提到: 】
: var widtharr=new Array();
: for(var i=0;i<div.length;i++){
: var th=div[i].offsetWidth;
: ...................
--
FROM 123.118.223.*
嗯,确实,没必要把它循环进数组再比较,可以用if直接比较就能出来的。
【 在 dhcn (码农) 的大作中提到: 】
: 放两个临时变量,一个存div对象,一个存其宽度,一次遍历,就出来最大宽度div了。
: 你这种特征是过度API依赖症。
: 讲个段子:N年前毕业招聘会上,碰到一传统企业招人,现场让写排序,我说现在有sort函数,人家不信,问那个语言的那个API。
--
FROM 27.17.61.*
我试了下,我那个是对DOM集合进行操作,操作过程中会发生算不出这种情况。
var divbox=document.getElementsByTagName("div");
divbox.reduce(function(pv,cv,ci){
alert(pv.offsetWidth || cv.offsetWidth);//获取不到
})
但是下面这样就可以获取到:
[divbox[0],divbox[1],divbox[2]].reduce(function(pv,cv,ci){//奇怪了,divbox本来就是个dom集合,是个array,为啥不能直接写。
alert(pv.offsetWidth || cv.offsetWidth);
})
【 在 guizhidao (知易行难) 的大作中提到: 】
: 数组最大index?
: 用reduce?
: var s = 0;
: ...................
--
FROM 27.17.61.*
1.不好意思误导你,reduce不是专门做这个的,我是刚好看到了呵呵,reduce是Array的方法。
2.getelementbytagname的返回值是nodelist,不是Array。所以不能用。
3.getelementsbytagname好像也是不推荐使用的。
【 在 xiatianup 的大作中提到: 】
: 我试了下,我那个是对DOM集合进行操作,操作过程中会发生算不出这种情况。
:
: var divbox=document.getElementsByTagName("div");
: ...................
--
FROM 223.69.70.*
reduce是不是专门做这个的没关系,反正确实可以用,map也可以找出来。
那个dom合集,我用isArray看了下,确实是false,之前一直以为是array,太受打击了。。。
【 在 guizhidao (知易行难) 的大作中提到: 】
: 1.不好意思误导你,reduce不是专门做这个的,我是刚好看到了呵呵,reduce是Array的方法。
: 2.getelementbytagname的返回值是nodelist,不是Array。所以不能用。
: 3.getelementsbytagname好像也是不推荐使用的。
--
FROM 59.172.76.*
你这基本的概念有偏差啊,看了一会才明白为啥非要两次遍历。。
【 在 xiatianup 的大作中提到: 】
: reduce是不是专门做这个的没关系,反正确实可以用,map也可以找出来。
: 那个dom合集,我用isArray看了下,确实是false,之前一直以为是array,太受打击了。。。
:
: ...................
--
FROM 101.71.37.*