代码如下:
问题在注释的地方
一个是用id取的 一个是把元素直接存在数组中的 (确实是指向的同一元素,都alert('ss')了)
同时用他们取元素的src的时候没问题
但是用最终样式取width的时候就出问题了
各位大虾子指教下<style type="text/css">
<!--
.ss1{
border:1px solid #000000;
width:200px;
}
.ss2{
border:10px solid #000000;
width:200px;
}
-->
</style><body>
<script>
function $(Id){return document.getElementById(Id)}
var CurrentStyle = function(element){return element.currentStyle || document.defaultView.getComputedStyle(element, null);};
function create(elm,parent,fn){var element = document.createElement(elm);parent.appendChild(element);if(fn)fn(element);};
var arr = [{elm:null,className:'ss1',id:'ss',src:'http://comic.qq.com/images/comic/2005/10/31/yh/s/42.jpg'},{elm:null,className:'ss2',src:'http://comic.qq.com/images/comic/2005/10/31/yh/s/25.jpg'}];
for(var i=0;i<arr.length;i++)
{
create('img',document.body,function(elm){
elm.className = arr[i].className;
arr[i].elm = elm;
arr[i].id&&(elm.id = arr[i].id);
elm.src = arr[i].src;
})
}
alert(arr[0].src) //正确
alert($(arr[0].id).src) //正确
if(arr[0].src==$(arr[0].id).src)alert('ss') //正确
alert(CurrentStyle($(arr[0].id)).width) //正确
alert(CurrentStyle(arr[0]).width) //错误
</script>
</body>
问题在注释的地方
一个是用id取的 一个是把元素直接存在数组中的 (确实是指向的同一元素,都alert('ss')了)
同时用他们取元素的src的时候没问题
但是用最终样式取width的时候就出问题了
各位大虾子指教下<style type="text/css">
<!--
.ss1{
border:1px solid #000000;
width:200px;
}
.ss2{
border:10px solid #000000;
width:200px;
}
-->
</style><body>
<script>
function $(Id){return document.getElementById(Id)}
var CurrentStyle = function(element){return element.currentStyle || document.defaultView.getComputedStyle(element, null);};
function create(elm,parent,fn){var element = document.createElement(elm);parent.appendChild(element);if(fn)fn(element);};
var arr = [{elm:null,className:'ss1',id:'ss',src:'http://comic.qq.com/images/comic/2005/10/31/yh/s/42.jpg'},{elm:null,className:'ss2',src:'http://comic.qq.com/images/comic/2005/10/31/yh/s/25.jpg'}];
for(var i=0;i<arr.length;i++)
{
create('img',document.body,function(elm){
elm.className = arr[i].className;
arr[i].elm = elm;
arr[i].id&&(elm.id = arr[i].id);
elm.src = arr[i].src;
})
}
alert(arr[0].src) //正确
alert($(arr[0].id).src) //正确
if(arr[0].src==$(arr[0].id).src)alert('ss') //正确
alert(CurrentStyle($(arr[0].id)).width) //正确
alert(CurrentStyle(arr[0]).width) //错误
</script>
</body>
上面的
if(arr[0].src==$(arr[0].id).src)alert('ss') ==========>改成 if(arr[0]==$(arr[0].id))alert('ss')
然后 就没有alert出ss
奇怪难道真的不是同一元素
不是同意元素 为什么src又是相同的了?????????
2个不同的对象怎么可能会相等?
在var arr = [{elm:null,className:'ss1',id:'ss',src:'http://comic.qq.com/images/comic/2005/10/31/yh/s/42.jpg'},{elm:null,className:'ss2',src:'http://comic.qq.com/images/comic/2005/10/31/yh/s/25.jpg'}];
中arr[0]指的是哪部分?是不是{elm:null,className:'ss1',id:'ss',src:'http://comic.qq.com/images/comic/2005/10/31/yh/s/42.jpg'}
那src是不是属于arr[0]的属性?然而你function create(elm,parent,fn){var element = document.createElement(elm);parent.appendChild(element);if(fn)fn(element);};
通过这个创建以后是不是变成了HTML标签?
那标签中id为ss的src是与arr[0]中的值是一样的?