我有一个带有几个javascript调用的图像,其中大部分工作正常。
基本上,我想要它做的是,当点击交换图像,然后根据它当前所在的图像,也交换鼠标悬停。
这是我的HTML:
<a href="#show" class="show_hide">
<img src="<?php echo WEB_URL; ?>/images/show-more-arrow.jpg" width="61" height="45" id="clicktoggleimage" onclick="changeImage()" onMouseOver="checkMouseOver()" onMouseOut="checkMouseOut()" /></a>
我的Javascript:
function changeImage() {
if (document.getElementById("clicktoggleimage").src == "http://www.pete.com/images/show-less-arrow.jpg") {
document.getElementById("clicktoggleimage").src = "http://www.pete.com/images/show-more-arrow.jpg";
} else {
document.getElementById("clicktoggleimage").src = "http://www.pete.com/images/show-less-arrow.jpg";
}
}
function checkMouseOver() {
if (document.getElementById("clicktoggleimage").src == "http://www.pete.com/images/show-less-arrow.jpg") {
document.getElementById("clicktoggleimage").src = "http://www.pete.com/images/show-less-arrow-over.jpg";
} else if (document.getElementById("clicktoggleimage").src == "http://www.pete.com/images/show-more-arrow.jpg") {
document.getElementById("clicktoggleimage").src = "http://www.pete.com/images/show-more-arrow-over.jpg";
}
}
function checkMouseOut() {
if (document.getElementById("clicktoggleimage").src == "http://www.pete.com/images/show-less-arrow-over.jpg") {
document.getElementById("clicktoggleimage").src = "http://www.pete.com/images/show-less-arrow.jpg";
} else if (document.getElementById("clicktoggleimage").src == "http://www.pete.com/images/show-more-arrow-over.jpg") {
document.getElementById("clicktoggleimage").src = "http://www.pete.com/images/show-more-arrow.jpg";
}
}
这样可以正常工作,除非第二次点击按钮时图像没有恢复到show-less-arrow.jpg
非常感谢你的帮助
答案 0 :(得分:1)
你可以让这个JS更有效率。
由于看起来您只是将'more'
替换为'less'
,反之亦然,在您的changeImage
函数中,这正是您的函数应该执行的操作。鼠标翻转/关闭只会切换字符串的'-over'
部分。
因此,从HTML中删除事件侦听器:
<a href="#show" class="show_hide">
<img src="<?php echo WEB_URL; ?>/images/show-more-arrow.jpg" width="61" height="45" id="clicktoggleimage" />
</a>
并使用此Javascript:
var img = document.getElementById("clicktoggleimage");
function changeImage() {
if (img.src.indexOf('less') == -1) {
img.src = img.src.replace('more', 'less');
} else {
img.src = img.src.replace('less', 'more');
}
}
function hoverImage() {
if (img.src.indexOf('arrow-over') == -1) {
img.src = img.src.replace('arrow', 'arrow-over');
} else {
img.src = img.src.replace('arrow-over', 'arrow');
}
}
img.onclick = cangeImage;
img.onmouseover = img.onmouseout = hoverImage;