最近做一个分页的javascript程序,需要先将tbody下面的tr标签全部删除,然后再append新的tr,使用下面的代码

var trs=$d("tbdoys").getElementsByTagName("tr");
    for(var j=0;j<trs.length;j++){
        $d("tbdoys").removeChild(trs[j]);

但是发现tbody在removeChild的时候,trs.length也实时的减小,导致tbody只能删除一半,bing一通,发现以下的博文,主要是讲:Javascript将字符串赋值给某变量是是值赋值,而将数组赋值给某变量时,是引用赋值,

最后采用了比较歪门邪道的方法,实现了功能。

 var trs=$d("tbdoys").getElementsByTagName("tr");    

for(var j=0;j<trs.length;j=0){
        $d("tbdoys").removeChild(trs[j]);
}

以下是博文地址及博文

http://www.crazycoder.cn/Javascript/Article45710.html 

Javascript是Javascript字符串及数组赋值区别门弱类型Javascript字符串及数组赋值区别语言Javascript字符串及数组赋值区别声明变量不需要声明其类型Javascript字符串及数组赋值区别var x 就可以等于任何类型Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别 
比如: 
var str = "Javascript字符串及数组赋值区别...."; 
var arr = ["this","is","Javascript字符串及数组赋值区别.gif' />"]; 
var obj = {name:"caizhongqi",age:26,sex:"male"}; 
这些都是正确Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别这似乎非常简单方便Javascript字符串及数组赋值区别但是这种方便也会带来Javascript字符串及数组赋值区别些令人难于捉摸Javascript字符串及数组赋值区别意外Javascript字符串及数组赋值区别看看下面Javascript字符串及数组赋值区别例子(例1): 
<script> var x = "this is Javascript字符串及数组赋值区别"; 
var y = x; 
x="ni hao"; 
alert(y) 
</script> 
你可能Javascript字符串及数组赋值区别下子知道alert出来Javascript字符串及数组赋值区别就是“this is Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别没错Javascript字符串及数组赋值区别但对于用Java语言Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别员来说Javascript字符串及数组赋值区别var y=x 应该是把x在存储器中Javascript字符串及数组赋值区别地址(指针)赋给y变量才对Javascript字符串及数组赋值区别因此他们觉得应该alert出“ni hao”才会更符合Java语言Javascript字符串及数组赋值区别习惯Javascript字符串及数组赋值区别但JavaScript语言不是这样Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别赋值是直接量操作Javascript字符串及数组赋值区别直接把数据copy给yJavascript字符串及数组赋值区别存储空间Javascript字符串及数组赋值区别 
再看看下面Javascript字符串及数组赋值区别例子(例2): 
<script> 
var x = ["hello"] // 这是Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别只有Javascript字符串及数组赋值区别个元素Javascript字符串及数组赋值区别并且该元素为Javascript字符串及数组赋值区别串类型 
var y = x; 
x[0] = "world"; 
alert(y[0]); 
</script> 
如果你还以为alert出来Javascript字符串及数组赋值区别是“hello”Javascript字符串及数组赋值区别那就错了Javascript字符串及数组赋值区别当 var y = x 时Javascript字符串及数组赋值区别x不是已经把它Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别给了y吗?但事实上却不是这样Javascript字符串及数组赋值区别 当 var y = x 时Javascript字符串及数组赋值区别x传Javascript字符串及数组赋值区别是它在存储器中Javascript字符串及数组赋值区别地址(指针)!x[0]="world" 修改了在原存储位置上Javascript字符串及数组赋值区别数据Javascript字符串及数组赋值区别因此alert(y[0])就是拿xJavascript字符串及数组赋值区别新值出来alertJavascript字符串及数组赋值区别混乱了吧?如何Javascript字符串及数组赋值区别会儿是直接量Javascript字符串及数组赋值区别会儿是引用量呢? 
不急Javascript字符串及数组赋值区别下面Javascript字符串及数组赋值区别例子将更加混乱(例3): 
<script> 
var x = ["hello"] // 这是Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别只有Javascript字符串及数组赋值区别个元素Javascript字符串及数组赋值区别并且该元素为Javascript字符串及数组赋值区别串类型 
var y = x; 
x = ["ni","hao"]; // x 将变成Javascript字符串及数组赋值区别个新Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别 
alert(y[0]); 
</script> 
Javascript字符串及数组赋值区别眼睛告诉你Javascript字符串及数组赋值区别alert出来Javascript字符串及数组赋值区别是“hello”!这让人捉摸不透古灵精怪Javascript字符串及数组赋值区别JavaScript! 
周星驰Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别国产零零漆Javascript字符串及数组赋值区别中有类似Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别幕: 
当星爷刚从深圳到香港执行任务时Javascript字符串及数组赋值区别袁咏仪从他Javascript字符串及数组赋值区别行李中发现Javascript字符串及数组赋值区别个吹头发Javascript字符串及数组赋值区别风筒Javascript字符串及数组赋值区别星爷说这其实是个须刨Javascript字符串及数组赋值区别把皮鞋拿出来Javascript字符串及数组赋值区别看却是Javascript字符串及数组赋值区别个风筒Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别个貌似大哥大电话Javascript字符串及数组赋值区别玩意其实又是Javascript字符串及数组赋值区别个须刨Javascript字符串及数组赋值区别须刨和风筒把袁咏仪和观众都搞混乱了Javascript字符串及数组赋值区别哈哈哈哈Javascript字符串及数组赋值区别这是我很喜欢Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别部片Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别次看时肚子都笑痛了Javascript字符串及数组赋值区别 
回过头来再看看刚才Javascript字符串及数组赋值区别变量赋值Javascript字符串及数组赋值区别直接量和引用量Javascript字符串及数组赋值区别使用Javascript字符串及数组赋值区别就好像须刨和风筒换来换去Javascript字符串及数组赋值区别把我们都搞晕了Javascript字符串及数组赋值区别 
其实问题出在对xJavascript字符串及数组赋值区别第 2次赋值 x = ["ni","hao"] 上Javascript字符串及数组赋值区别我们看看变量在存储器上变化以及JavaScript在对待Javascript字符串及数组赋值区别串类型和对象类型Javascript字符串及数组赋值区别区别: 
我们观察下面两种情况: 
var x = "this is Javascript字符串及数组赋值区别..."; 
var y = ["this","is","Javascript字符串及数组赋值区别"]; 
x和y区别的处在于类型Javascript字符串及数组赋值区别javascriptJavascript字符串及数组赋值区别解析器把Javascript字符串及数组赋值区别串直接赋值(其实就是copy)给x(直接量)Javascript字符串及数组赋值区别却把Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别指针赋给y(引用量)Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别切都是瞬间全自动Javascript字符串及数组赋值区别!结合下面Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别可能会更好地理解: 

图中p1、p2...就是变量Javascript字符串及数组赋值区别指针Javascript字符串及数组赋值区别上面Javascript字符串及数组赋值区别 var y 中Javascript字符串及数组赋值区别y存Javascript字符串及数组赋值区别就是Object类型变量Javascript字符串及数组赋值区别指针p1(假设)Javascript字符串及数组赋值区别而x存放Javascript字符串及数组赋值区别就是Javascript字符串及数组赋值区别串本身Javascript字符串及数组赋值区别再分析Javascript字符串及数组赋值区别下例3Javascript字符串及数组赋值区别执行 var x = ["hello"] 时Javascript字符串及数组赋值区别解析器就在内存上开辟Javascript字符串及数组赋值区别块存储空间放这个Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别而 x 就拿到了这个空间Javascript字符串及数组赋值区别地址(指针)Javascript字符串及数组赋值区别再执行 x = ["ni","hao"] 时Javascript字符串及数组赋值区别解析器又新开辟Javascript字符串及数组赋值区别块存储空间放这个新Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别而x就是这个新存储空间Javascript字符串及数组赋值区别指针Javascript字符串及数组赋值区别这也就是说Javascript字符串及数组赋值区别JavaScript 里变量Javascript字符串及数组赋值区别重定义(或重新赋值)将会新开辟Javascript字符串及数组赋值区别块存储空间Javascript字符串及数组赋值区别而没有销毁原来Javascript字符串及数组赋值区别空间;回过头来再看例2Javascript字符串及数组赋值区别x[0] = "world"Javascript字符串及数组赋值区别这句没有给x新定义值Javascript字符串及数组赋值区别没有新开辟存储空间Javascript字符串及数组赋值区别只是修改了它存储空间里面Javascript字符串及数组赋值区别数据Javascript字符串及数组赋值区别因此例2最后alert出来Javascript字符串及数组赋值区别就是“world”;例1是Javascript字符串及数组赋值区别串赋值Javascript字符串及数组赋值区别全过程是直接量操作Javascript字符串及数组赋值区别 
从上面Javascript字符串及数组赋值区别分析可以看出Javascript字符串及数组赋值区别JavaScript Javascript字符串及数组赋值区别变量可以存储直接量也可以存储指针Javascript字符串及数组赋值区别这是没办法被人工干扰Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别因此Javascript字符串及数组赋值区别在日常Javascript字符串及数组赋值区别编码中Javascript字符串及数组赋值区别就需要注意这些问题Javascript字符串及数组赋值区别比如大Javascript字符串及数组赋值区别串连接Javascript字符串及数组赋值区别循环里面赋值等细节就能直接影响到Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别执行效率Javascript字符串及数组赋值区别 
看看两个例子: 
var _tmpStr=""; 
var str = "this is big Javascript字符串及数组赋值区别..."; 
for (i=0; i<100; iJavascript字符串及数组赋值区别){ 
_tmpStr Javascript字符串及数组赋值区别 a; 

a = _tmpStr; 
Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别串操作Javascript字符串及数组赋值区别使用直接量Javascript字符串及数组赋值区别每次循环都要操作大Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别非常笨重Javascript字符串及数组赋值区别效率低下Javascript字符串及数组赋值区别如果改用引用量操作Javascript字符串及数组赋值区别即通过Javascript字符串及数组赋值区别
var str = "this is big Javascript字符串及数组赋值区别..."; 
var _tmpArray = Javascript字符串及数组赋值区别
for (i=0; i<100; iJavascript字符串及数组赋值区别){ 
_tmpArray[i]=str; 

str = _tmpArray.join(""); 
做个测试Javascript字符串及数组赋值区别假如有个100kJavascript字符串及数组赋值区别Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别用直接量连接操作Javascript字符串及数组赋值区别Javascript字符串及数组赋值区别机器上需要约2600毫秒Javascript字符串及数组赋值区别如果用Javascript字符串及数组赋值区别连接Javascript字符串及数组赋值区别则需要150毫秒Javascript字符串及数组赋值区别效率相差十几倍Javascript字符串及数组赋值区别 
好久没写这么长Javascript字符串及数组赋值区别文章了Javascript字符串及数组赋值区别花了我大半天Javascript字符串及数组赋值区别时间Javascript字符串及数组赋值区别 

相关文章: