解决方案 »
- 使用pngfix的几点体会
- 请教js如何判断某个对象是否出现在窗口里了?
- URL后面带参数和不带参数有什么区别?
- showModelessDialog大小动态设置,showModelessDialog大小随内容窗体大小变化 怎么做
- 求一段从身份证号中取出生日的javascript代码
- 如何给opener 页面的table1 添加行,并增加事件,请来看看,谢谢
- 新手求助,jsp中window.open弹出框的问题
- 请问各位高手,如何用简单程序在网页中实现类似GIS中图形的放大和缩小,指点
- 怎么让表格实现一格格的滚动?
- 用jquery怎么遍历一个table的每一个cell的内容
- 根据内容让滚动条滚到适当位置
- js多线程处理办法
{
var tableNode=document.getElementsByTagName("table")[0];
var trNodes=tableNode.rows;
var arr=[];
for(var i=0;i<trNodes.length;i++){
arr.push(trNodes[i]);
}
arr[0]=arr[1]; //为什么这样就复制就不行
alert(arr[1].cells[1].innerHTML)
alert(arr[0].cells[1].innerHTML)
}
不是很明白你的意思 dom的list和数组还是有区别的
dom的list不能修改 就是说domlist[0]=domlist[1]是无效的
你把他放到数组里试试 看是不是你要的效果
首先我提取了var trNodes=tableNode.rows;这个应该看得懂
第一种方式对集合进行复制var arr=trNodes;
然后就会发现
arr[0]=arr[1]; //为什么这样就复制就不行
alert(arr[1].cells[1].innerHTML);
alert(arr[0].cells[1].innerHTML);
这样的打印结果是不同的
arr[0].cells[1].innerHTML=arr[1].cells[1].innerHTML;
这样的打印结果是相同的
第二种方式对集合进行复制
var arr1=new Array(trNodes.length-1);
for(var x=0;x<arr1.length;x++)
{
arr1[x]=trNodes[x+1];
}
这时arr1[0]=arr1[1];是可以复制过来的
也就是说这种复制方法应该与上述第一种复制方法是不相同的
我想问的是是什么原因引发的这种差别
还有就是
arr1[1].cells[1].innerHTML=arr1[2].cells[1].innerHTML;
alert(arr1[2].cells[1].innerHTML);
alert(arr1[1].cells[1].innerHTML);
alert(trNodes[2].cells[1].innerHTML);
alert(arr[2].cells[1].innerHTML);
当改动了arr1[1].cells[1].innerHTML中的数时原有集合的和第一种复制方式中集合的数值也改变了
这是不是可以说明他们在内存中指的是一个地方?如果是那为什么还会引发上面的那个问题?
举个例子吧,arr[0].cells[1]跟arr[1].cells[1]假如都是一个人,IT专业术语叫对象,
你永远是你,不是能等于他,顶多去高丽棒子那整容像他,innerHTML就是这个意思,这就是一个人的外表,
但是他的DNA永远都是他,它的ID也不能改,最多就是把一个对象的内容给复制过来,换上而已。
alert(arr1[2].cells[1].innerHTML);
alert(arr1[1].cells[1].innerHTML);
alert(trNodes[2].cells[1].innerHTML);
alert(arr[2].cells[1].innerHTML);
应该怎么解释呢 arr1[1].cells[1].innerHTML的外表变了
为什么会引发arr[2]与trNodes[2]的外表改变呢