javascript - 更改由选择 HTML 元素更改的图像的问题
问题描述
我目前正在开发一个运动/运动服网站。在商店子页面中,我有单独的产品卡。那些颜色不同的产品会有一个下拉菜单,用户可以在其中选择颜色并在网页上查看。我有这个在 JavaScript 中为我工作。
我遇到的错误是试图让图像在悬停在图像元素上和离开图像元素时发生变化(在服装的前视图和后视图之间)。我将附上以下代码:
HTML
<div id="item_4">
<img src="img/apparel/shop_item_4.png" style="width:100%" alt="Hoody" id="item_4_switch">
<h1>Apparel Item #1</h1>
<p>$19.99</p>
<select id="shop_item_4_switch">
<option value="img/apparel/shop_item_4.png">Black</option>
<option value="img/apparel/shop_item_4_alt_1.png">Blue</option>
<option value="img/apparel/shop_item_4_alt_3.png">Red</option>
</select>
<p><button>Purchase</button></p>
</div>
JavaScript
document.getElementById("shop_item_4_switch").onchange = changeShopItemFour;
function changeShopItemFour() {
var img = document.getElementById("item_4_switch");
img.src = this.value;
}
document.getElementById('item_4_switch').addEventListener('mouseenter', function() {
if (this.src === "img/apparel/shop_item_4.png") {
this.src = "img/apparel/shop_item_4_alt.png";
} else if (this.src === "img/apparel/shop_item_4_alt_1.png") {
this.src = "img/apparel/shop_item_4_alt_2.png";
} else if (this.src === "img/apparel/shop_item_4_alt_3.png") {
this.src = "img/apparel/shop_item_4_alt_4.png"
}
});
document.getElementById('item_4_switch').addEventListener('mouseleave', function() {
if (this.src === "img/apparel/shop_item_4_alt.png") {
this.src = 'img/apparel/shop_item_4.png';
} else if (this.src === "img/apparel/shop_item_4_alt_2.png") {
this.src = "img/apparel/shop_item_4_alt_1.png";
} else if (this.src === "img/apparel/shop_item_4_alt_4.png") {
this.src = "img/apparel/shop_item_4_alt_3.png"
}
});
我试图让if 语句在服装项目的正面视图和基于图像元素的鼠标悬停的后视图之间交替。
我觉得我在某个地方犯了一个业余错误,任何指导将不胜感激!
解决方案
请忽略。我已经解决了这个问题。
我已经做到了可以悬停进出的位置,并在服装项目的不同颜色选项的前视图和后视图之间交替。
document.getElementById('item_4_switch').addEventListener('mouseenter', function() {
var x = document.getElementById('shop_item_4_switch')
if (x.value === "img/apparel/shop_item_4.png") {
this.src = "img/apparel/shop_item_4_alt.png";
} else if (x.value === "img/apparel/shop_item_4_alt_1.png") {
this.src = "img/apparel/shop_item_4_alt_2.png";
} else if (x.value === "img/apparel/shop_item_4_alt_3.png") {
this.src = "img/apparel/shop_item_4_alt_4.png"
}
});
document.getElementById('item_4_switch').addEventListener('mouseleave', function() {
var x = document.getElementById('shop_item_4_switch')
if (x.value === "img/apparel/shop_item_4.png") {
this.src = "img/apparel/shop_item_4.png";
} else if (x.value === "img/apparel/shop_item_4_alt_1.png") {
this.src = "img/apparel/shop_item_4_alt_1.png";
} else if (x.value === "img/apparel/shop_item_4_alt_3.png") {
this.src = "img/apparel/shop_item_4_alt_3.png"
}
});
推荐阅读
- c - 为什么我不能显示最后 2 个字符,为什么会出错?
- python - 使用 Python 和 R 减小 docker 镜像大小
- coq - 如何拆分两个列表的相等性?
- react-native - Windows 10 上的 React Native:npm install from mac 项目创建命令未找到问题
- sql - 捕获 null 的总和
- javascript - 签名板 ToDataURL 不适用于复杂签名
- flutter - Flutter 说 RenderFlex 子节点具有非零 flex 但传入的高度约束是无界的
- python - 查找包含在第一个括号内的子字符串
- amazon-web-services - 将 AWS Redis 缓存连接到多个 AWS 账户 Ec2 实例
- c - 如何从 python 中的 C 结构中获取值?