哈哈哈哈,笑死我了,几千万个INPUT,那还不噶屁啊?字符串的连接,参考我给你的另一个回复 http://community.csdn.net/Expert/TopicView1.asp?id=5448715另外,在循环时,尽量这样写 var els = document.form1.elements; for(var i = 0, l = els.length; i < l; i++) { //..... }
matrixy 的var els = document.form1.elements; for(var i = 0, l = els.length; i < l; i++) { //..... } 第一次见到:)for(var i = 0, l = els.length; i < l; i++)每次循环是不是都会进行一次赋值操作:l = els.length 而影响速度??
每次循环是不是都会进行一次赋值操作:l = els.length ----- ---答:不会。 l = els.length 只是赋初始值。照你这么说。每次都i=0。那还循环什么
var els = document.form1.elements; for(var i = 0, l = els.length; i < l; i++) { //..... } ////////////////////////////////// for循环的过程是这样的,假若语句如下 for(A;B;C)D; A语句块为循环的初始化过程,然后进行B语句块,如果B语句块条件成立,则执行D,否则跳出,然后执行D里的语句块,然后再跳回B语句块,这个问题,华为的笔试题里就曾经有过.在这里之所以要这么写,因为在B这个条件判断的地方,如果用常量代替它的话会更好一些,以省得每次作判断时都要去取一次它的值,在java的for(int i = 0; i < list.size(); i++)这样的情况下更明显些,因为我也不知道JS的Array的length属性是怎么去获取的,是否是修改或的一个常量,这只是个习惯性的问题,曾在某某语言参考里也看到过推荐用该方法.
我的说法只是给个建议而己,但是事实上它确实能提高很大的效率,一个好习惯,而并非规定,shortway(您知道Javascript Tidiy吗?) 的回复我看都木看就回了.....-_-!!测试结果如下,确实很大的提高了效率,JS里,在取String.length属性时还做了运算的. var str = "..."; document.write(str.length); var time = new Date(); for(var i = 0, l = str.length; i < l; i++); // 1 for(var i = 0; i < str.length; i++); // 2 alert(new Date() - time); 在这里,str的长度为142800,越长越能测出差距,如果只用第一个循环的话,那么耗时大约是62 - 78ms之间,而第二个循环的话,耗时在93-110ms之间,循环越大越明显,至于其它的,大家自己去发现吧...
http://community.csdn.net/Expert/TopicView1.asp?id=5448715另外,在循环时,尽量这样写
var els = document.form1.elements;
for(var i = 0, l = els.length; i < l; i++)
{
//.....
}
再说,这样对浏览者显得人性化一些,数据的校验也来得容易些。
DDOS洪水攻击客户端?
:o
for(var i = 0, l = els.length; i < l; i++)
{
//.....
}
第一次见到:)for(var i = 0, l = els.length; i < l; i++)每次循环是不是都会进行一次赋值操作:l = els.length
而影响速度??
-----
---答:不会。
几千个input不算多,可能是自己的代码有问题,
-----
---答:不会。
l = els.length 只是赋初始值。照你这么说。每次都i=0。那还循环什么
for(var i = 0, l = els.length; i < l; i++)
{
//.....
}
//////////////////////////////////
for循环的过程是这样的,假若语句如下
for(A;B;C)D;
A语句块为循环的初始化过程,然后进行B语句块,如果B语句块条件成立,则执行D,否则跳出,然后执行D里的语句块,然后再跳回B语句块,这个问题,华为的笔试题里就曾经有过.在这里之所以要这么写,因为在B这个条件判断的地方,如果用常量代替它的话会更好一些,以省得每次作判断时都要去取一次它的值,在java的for(int i = 0; i < list.size(); i++)这样的情况下更明显些,因为我也不知道JS的Array的length属性是怎么去获取的,是否是修改或的一个常量,这只是个习惯性的问题,曾在某某语言参考里也看到过推荐用该方法.
var str = "...";
document.write(str.length);
var time = new Date();
for(var i = 0, l = str.length; i < l; i++); // 1
for(var i = 0; i < str.length; i++); // 2
alert(new Date() - time);
在这里,str的长度为142800,越长越能测出差距,如果只用第一个循环的话,那么耗时大约是62 - 78ms之间,而第二个循环的话,耗时在93-110ms之间,循环越大越明显,至于其它的,大家自己去发现吧...
比如,把用户操作过的text的值添加到array中,或对象中,然后遍历内存要比DOM快得多,更何况还有join("")方法可用.
还包括页面上其他的控件
换document.getElementsByTagName("input")