currentStyle document.defaultView !!!!!

wtcsy 2009-05-22 04:00:50
代码如下:
问题在注释的地方
一个是用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>
...全文
85 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这些提示,你应该明白了吧

  • 打赏
  • 举报
回复
给你提示:

你发现你的arr[0]指的是什么没?是不是var arr=。。。

而$(arr[0].id)指的是什么呢?是不是function $(Id){return document.getElementById(Id)}?

而再来看,你说他的src相同的分析
在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]中的值是一样的?
  • 打赏
  • 举报
回复
你仔细分析你循环里面的代码
好好想想
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wtcsy 的回复:]
那为什么他们的src会相等了??????
[/Quote]
晕死,虽然他们是属于不同的对象,但他们的指向同一个SRC啊
wtcsy 2009-05-22
  • 打赏
  • 举报
回复
那为什么他们的src会相等了??????
  • 打赏
  • 举报
回复
arr[0]==$(arr[0].id)
2个不同的对象怎么可能会相等?
  • 打赏
  • 举报
回复
是不同的对象
wtcsy 2009-05-22
  • 打赏
  • 举报
回复
失误
上面的
if(arr[0].src==$(arr[0].id).src)alert('ss') ==========>改成 if(arr[0]==$(arr[0].id))alert('ss')
然后 就没有alert出ss
奇怪难道真的不是同一元素
不是同意元素 为什么src又是相同的了?????????

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧