找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1590|回复: 14

小小菜鸟简单代码问题

[复制链接]
发表于 2007-12-20 11:55:35 | 显示全部楼层 |阅读模式
真要郁闷死了,问完这个问题回头重新看书去了。。。

 提示:您可以先修改部分代码再运行


为什么div的背景色不变呢?代码问题出在哪里了呀?
耽搁各位时间了。。。
发表于 2007-12-20 11:57:55 | 显示全部楼层

 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

发表于 2007-12-20 12:08:34 | 显示全部楼层

 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-20 12:35:34 | 显示全部楼层
额。。。。开始问题不是这样的
多谢楼上两位

 提示:您可以先修改部分代码再运行


我这个循环语句又是哪里出问题了呢?为什么不管在哪个div上的onclick,4个div的背景色都哗啦啦地变了呀。。
其中这句if(this==div[i])  div[i].style.background="#ccc";
为什么用if(this==div[i])  this.style.background="#ccc";这样就报错呢?
再次麻烦各位了,多谢!
回复 支持 反对

使用道具 举报

发表于 2007-12-20 13:00:18 | 显示全部楼层

 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-20 15:41:48 | 显示全部楼层
非常感谢caiying版主!
我也清楚了这个例子里应该如何正确使用this
但还是有一个疑惑:为什么我在4楼的例子会使得4个div的背景色会变化了呢?
因为如果按照我在4楼的写法:
函数hh()中:
for(var i=0;i<div.length;i++){
if(this==div[i])  div[i].style.background="#ccc";}

并在div中:
<div onclick="hh()"></div>;

此时div中的onclick应该只是对函数的引用,所以函数hh()中的this关键字应该是指向
window对象的,那this永远也不会等于div[i],也就永远也不会执行div[i].style.background="#ccc";
不知道我的理解是否正确。。。
当然,肯定是哪里理解错了或者不全面,恳请解答。
回复 支持 反对

使用道具 举报

发表于 2007-12-20 16:22:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-20 17:33:53 | 显示全部楼层

回复 #7 awss 的帖子

看过您推荐的这篇帖子后
因为按照http://bbs.blueidea.com/thread-2674442-1-1.html
中#7楼的:
如果“==”左边的对象和右边对象是同一对象或是右边的对象的父对象,true,否则false

通过以下例子测试似乎有些问题:

 提示:您可以先修改部分代码再运行



我暂且只能这么理解(仅对ie):
仅适用于window对象和对window对象的引用对象:
window对象包括对window对象的引用对象如果出现在"=="相等判定中的左边;
1、判定式右边对象如果为window对象或者是对window对象的引用;判定式返回值自然为true;
2、判定式右边对象如果为window对象的子孙对象,判定式返回值为true.
回复 支持 反对

使用道具 举报

发表于 2007-12-20 18:05:39 | 显示全部楼层
回复 #6 tsun1024 的帖子
这个问题有点复杂,
请看两个测试:

 提示:您可以先修改部分代码再运行


 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

发表于 2007-12-20 18:07:53 | 显示全部楼层
回复 #8 tsun1024 的帖子
这个问题有点复杂,
请看3个测试:

 提示:您可以先修改部分代码再运行


 提示:您可以先修改部分代码再运行


 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

发表于 2007-12-20 18:10:17 | 显示全部楼层
好像不是简单说清楚的,如果感兴趣,请GG,我记得有文章介绍,(我没保存)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-20 20:15:52 | 显示全部楼层
#10楼三个例子如果都加上<body></body>标签,结果都还是符合我在8楼的理解的(需要注意其中仅当window及其引用位于等式左边才可以),哈哈
但回到家发现在8楼的那段理解绝对还有问题;
看下面这个:

 提示:您可以先修改部分代码再运行


这里全局变量a照理也应该是window的子对象,可第二个alert返回值为false...
我有兴趣,但应该不是作为一个初学者可以真正弄懂的吧。。。呵呵
感谢 caiying版主的关注!
回复 支持 反对

使用道具 举报

发表于 2007-12-20 20:37:43 | 显示全部楼层

 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

发表于 2007-12-20 20:51:23 | 显示全部楼层
有趣:

 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

发表于 2007-12-20 20:55:31 | 显示全部楼层
再看:

 提示:您可以先修改部分代码再运行

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )

GMT+8, 2021-1-21 16:00 , Processed in 0.463439 second(s), 14 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表