其实也很简单,当时做asp时用了一个较复杂的算法(下面代码中MakeTable2),今天又想到一个更容易理解的算法(MakeTable1),今天用js实现了下,不过郁闷的是感觉效率上都一样,这样还是用第一个比较好(容易理解,代码少)。 代码如下: Untitled 1 输出行列并根据索引输出数组元素, 如果当前数组索引不小于数组长度或当前数组值为空则写入占位符单元格。 */ function makeTable1(cols,a){ //cols为列数,a应该是一个用逗号分开的字符串 //alert(a.split(',').length); var t1=new Date().getTime(); a=a.split(','); //显式转换为数组,否则ie不能识别为数组 var l=a.length; //得到数组的长度 var rows=parseInt(l/cols)+(l%cols==0?0:1); //计算出行数 var outStr=""; for(var i=0;i"; for(var j=0;j"+( (temp"); } outStr+="" } outStr+=""; document.write(outStr+"执行时间:"+(new Date().getTime()-t1)+""); //alert(rows); } /* 函数作用:同上 函数思路:计算数组长度,然后根据长度循环输出元素值,如果当前循环变量值是列数的整数倍(余数为0), 则输出行结束标记。否则输出列信息。然后计算当前循环变量值是否是列数的整数倍,如果不是,利用循环补足。直至补齐。 */ function makeTable2(cols,a){ var t2=new Date().getTime(); a=a.split(','); var l=a.length; var outStr=""; for(var i=0;i"; } outStr+=(""+a[i]+""); if(temp==0){ outStr+=""; } } var x=i%cols; if(x!=0){ for(var i=0;i<(cols-x);i++){ outStr+=" "; } outStr+="" } outStr+="" document.write(outStr+"执行时间:"+(new Date().getTime()-t2)+""); } var str="a,b,c,d,e,v,f,s,e,d,s,d,e,d,a,b,c,d,e,v,f,s,e,d,s,d,e,a,b,c,d,e,v,f,s,e,d,s,b,c,d,e,v,f,s,e,d,s,d,e,d,a,b,c,d,e,v,f,s,e,d,s,d,e,a,b,c,d,e,v,f,s,e,d,s,b,c,d,e,v,f,s,e,d,s,d,e,d,a,b,c,d,e,v,f,s,e,d,s,d,e,a,b,c,d,e,v,f,s,e,d,s,s,e,d,s,d,e,a,b,c,d,e,v,f,s,e,d,s,b,c,d,e,v,f,s,e,d,s,d,e,d,a,b,c,d,e,v,f,s,e,d,s,d,e,a,b,c,d,e,v,f,s,e,d,s"; str+=str; str+=str; makeTable1(5,str); makeTable2(5,str); script> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
Copyright © 2019- sarr.cn 版权所有
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务