function setupRollover(thisImage) { thisImage.outImage = new Image(); thisImage.outImage.src = thisImage.src; thisImage.onmouseout = function() { this.src =thisImage.outImage .src; } thisImage.clickImage = new Image(); thisImage.clickImage.src = "images/" + thisImage.id + "_click.gif"; thisImage.onclick = function() { this.src = thisImage.clickImage.src; } thisImage.overImage = new Image(); thisImage.overImage.src = "images/" + thisImage.id + "_on.gif"; thisImage.onmouseover = function() { this.src = thisImage.overImage.src; } }
最近在学习javascript,在书上看到了这样的一串代码,意思是鼠标在图片上,点击图片,不在图片上的效果,我不明的是为什么要定义outImage,clickImage,overImage,所以我改了一下代码
function setupRollover(thisImage) { temp = new Image(); temp.src = thisImage.src; thisImage.onmouseout = function() { this.src = temp.src; } temp.src = "images/" + thisImage.id + "_click.gif"; thisImage.onclick = function() { this.src = temp.src; } temp.src = "images/" + thisImage.id + "_on.gif"; thisImage.onmouseover = function() { this.src = temp.src; } }
发现不行,我不明白是为什么,请高人指点!
这是本人的理解:在页面加载完成后这段代码初始化了一次,temp.src = "images/" + thisImage.id + "_on.gif";初始化完成之后,temp.src的值就是这个。所以,不管把鼠标放到图片上、离开图片、点击图片this.src的值都等于temp.src,也就是"images/" + thisImage.id + "_on.gif"。这是我改过的代码:
function setupRollover(thisImage) { temp = new Image(); thisImage.onmouseout = function() { temp.src = "images/" + thisImage.id + "_off.gif"; this.src = temp.src; } thisImage.onclick = function() { temp.src = "images/" + thisImage.id + "_click.gif"; this.src = temp.src; } thisImage.onmouseover = function() { temp.src = "images/" + thisImage.id + "_on.gif"; this.src = temp.src; } }
你的代码运行下来的,你的
temp变量的src指向的肯定是
"images/" + thisImage.id + "_on.gif";
那你点击,鼠标移上,移出,都是这个图片,有什么效果呢?
你好,效果确实跟你说的一样。
thisImage.onmouseout = function() { this.src =thisImage.outImage .src; }
这里面的赋值是什么意思,我以为跟C语言一样,还有那个this是什么意思。
@wen858636827: this表示当前对象。
为什么一直是:"images/" + thisImage.id + "_on.gif";
thisImage.clickImage.src = "images/" + thisImage.id + "_click.gif";
这里不是click.gif吗?
兄弟,经过我一晚上的冥思苦想终于知道是为什么了。
@wen858636827: 你知道了说一下子啊,兄弟。你想让我也苦思冥想一晚上啊?