我正在尝试用javascript/jquery编写一个基本的图像交换。
由于某些原因,我的if/else语句没有正确运行。我是不是用错了?
谢谢
Javascript:
<script type="text/javascript">
var images = new Array();
var comic = document.getElementById("comicssubsite").src;
var artwork = document.getElementById("artworksubsite").src;
var about = document.getElementById("aboutsubsite").src;
images[0] = "./images/SiteDesign/Comics_subsites_hover.png";
images[1] = "./images/SiteDesign/Comics_subsites.png";
images[2] = "./images/SiteDesign/Artwork_subsites_hover.png";
images[3] = "./images/SiteDesign/Artwork_subsites.png";
images[4] = "./images/SiteDesign/About_subsites_hover.png";
images[5] = "./images/SiteDesign/About_subsites.png";
function onHover() {
if (comic) {
$("#comicssubsite").attr('src', images[0]);
}
else if (artwork) {
$("#artworksubsite").attr('src', images[2]);
}
else if (about) {
$("#aboutsubsite").attr('src', images[4]);
}
}
function offHover() {
if (comic) {
$("#comicssubsite").attr('src', images[1]);
}
else if (artwork) {
$("#artworksubsite").attr('src', images[3]);
}
else if (about)
$("#aboutsubsite").attr('src', images[5]);
}
}
</script>HTML (代码段)
<div class="span2">
<div id="pages">
<span class="pageitems" ><a href="./?action=homepage&page=1&site=comics"><img id="comicssubsite" src="./images/SiteDesign/Comics_subsites.png" alt="comics bg" onmouseover="onHover();" onmouseout="offHover();"/></a></span>
</div>
</div>
<div class="span2">
<div id="pages">
<span class="pageitems"><a href="./?action=homepage&page=1&site=artwork"><img id="artworksubsite" src="./images/SiteDesign/Artwork_subsites.png" alt="artwork bg" onmouseover="onHover();" onmouseout="offHover();"/></a></span>
</div>
</div>
<div class="span2">
<div id="pages">
<span class="pageitems"><a href="./?action=homepage&page=1"><img id="aboutsubsite" src="./images/SiteDesign/About_subsites.png" alt="about bg" onmouseover="onHover();" onmouseout="offHover();"/></a></span>
</div>
</div>发布于 2012-11-12 07:13:25
if语句检查各个元素的src属性是否不为空。这并不是你真正想要的--它们总是会被执行。此外,如果你已经决定使用jQuery,那么你应该在任何地方使用它,特别是在DOM方面,比如事件处理。
您使用数组作为数据结构是一个很好的开始,但是非常无用,因为您仍然手动地而不是通过编程来寻址这些项。使用对象文字作为键值映射,通过图像id获取urls:
jQuery(document).ready(function($) {
var images = {
"comicssubsite": [
"./images/SiteDesign/Comics_subsites_hover.png",
"./images/SiteDesign/Comics_subsites.png"
],
"artworksubsite": [
"./images/SiteDesign/Artwork_subsites_hover.png",
"./images/SiteDesign/Artwork_subsites.png"
],
"aboutsubsite": [
"./images/SiteDesign/About_subsites_hover.png",
"./images/SiteDesign/About_subsites.png"
]
};
function mouseover(e) {
if (this.id in images) // check for key in map
this.src = images[this.id][0];
}
function mouseout(e) {
if (this.id in images)
this.src = images[this.id][1];
}
$("#comicssubsite, #artworksubsite, #aboutsubsite").hover(mouseover, mouseout);
// You might want to use a loop instead, then you don't need to write the ids twice:
// for (var id in images)
// $('#'+id).hover(mouseover, mouseout);
});发布于 2012-11-12 07:01:02
您的第一个if语句总是返回true,因为每个图像标记都有一个源。
如果你有这个:
var comic = document.getElementById("comicssubsite").src;然后是这个:
if (comic) {
//code
}if语句所做的就是检查comic是否存在,它确实是这样做的。
https://stackoverflow.com/questions/13336363
复制相似问题