javascript - 如何使用按钮同时添加和删除图像?
问题描述
我有一个带有 .canvas 类的部分,我想在上面显示图像(它是薯条的图片,我希望浇头出现在它们上面)。我已经设法让图像出现在具有画布类的部分上,但它们都堆叠在一起。如何使用相同的按钮同时添加图像并删除前一个图像,最好使用 jQuery。
$('#randomize').on('click', function() {
const imgArray = $('.imgContainer');
const randomImg = Math.floor(Math.random() * imgArray.length) + 1;
for (let i = 0; i < imgArray.length; i++) {
if (randomImg === 1) {
imgArray[0].style.display = 'block';
} else if (randomImg === 2) {
imgArray[1].style.display = 'block';
} else if (randomImg === 3) {
imgArray[2].style.display = 'block';
} else if (randomImg === 4) {
imgArray[3].style.display = 'block';
} else if (randomImg === 5) {
imgArray[4].style.display = 'block';
} else if (randomImg === 6) {
imgArray[5].style.display = 'block';
} else if (randomImg === 7) {
imgArray[6].style.display = 'block';
} else if (randomImg === 8) {
imgArray[7].style.display = 'block';
} else if (randomImg === 9) {
imgArray[8].style.display = 'block';
} else {
imgArray[9].style.display = 'block';
}
.imgContainer {
display: none;
}
<button id="randomize">Feed me</button>
<section class="canvas">
<div class="imgContainer ketchup">
<img src="./assets/images/ketchup.png" alt="">
</div>
<div class="imgContainer cheese">
<img src="./assets/images/cheeseCurds.png" alt="">
</div>
<div class="imgContainer peppers">
<img src="./assets/images/hotPeppers.png" alt="">
</div>
<div class="imgContainer bacon">
<img src="./assets/images/baconBits.png" alt="">
</div>
<div class="imgContainer iceCream">
<img src="./assets/images/iceCream.png" alt="">
</div>
<div class="imgContainer sprinkles">
<img src="./assets/images/sprinkles.png" alt="">
</div>
<div class="imgContainer vaccine">
<img src="./assets/images/vaccine.png" alt="">
</div>
<div class="imgContainer kitten">
<img src="./assets/images/kitten.png" alt="">
</div>
<div class="imgContainer sock">
<img src="./assets/images/dirtySock.png" alt="">
</div>
<div class="imgContainer face">
<img src="./assets/images/brendanFraser.png" alt="">
</div>
</section>
该代码段将无法在此处正常运行,因为它不包含整个文件。我只是不知道如何在删除前一个图像时添加图像。
解决方案
例如,您可以在显示任何内容之前简单地隐藏所有内容。
$('.imgContainer').hide();
$('#randomize').on('click', function() {
const imgArray = $('.imgContainer');
const randomImg = Math.floor(Math.random() * imgArray.length) + 1;
$('.imgContainer').hide();
for (let i = 0; i < imgArray.length; i++) {
if (randomImg === 1) {
imgArray[0].style.display = 'block';
} else if (randomImg === 2) {
imgArray[1].style.display = 'block';
} else if (randomImg === 3) {
imgArray[2].style.display = 'block';
}
} });
.imgContainer {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="randomize">Feed me</button>
<section class="canvas">
<div class="imgContainer ketchup">
<img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.W8Ixmq-tCRyq4hwmsRrVqgHaDt%26pid%3DApi&f=1" alt="">
</div>
<div class="imgContainer cheese">
<img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fpmcvariety.files.wordpress.com%2F2019%2F12%2Fbaby-yoda-plush-toy-mattel-the-mandalorian.png%3Fw%3D1000%26h%3D563%26crop%3D1&f=1&nofb=1" alt="">
</div>
<div class="imgContainer peppers">
<img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.digitaltveurope.com%2Ffiles%2F2019%2F12%2FBaby-Yoda-Soup.jpg&f=1&nofb=1" alt="">
</div>
</section>
推荐阅读
- azure-active-directory - 如何为个人 Microsoft 帐户 (MSA) 实施代表 (OBO) 流程?
- javascript - 悬停时更改进度条跨度文本
- javascript - 循环时数组操作不起作用
- jquery - 使用 jquery 选择器检测 pnotify 的显示或加载
- c++ - 在复合运算符上使用 static_cast
- odata - UI5:如何将 Edm.DateTime (V2) 类型的日期添加到 XML 视图?
- graph-databases - 如何使用联合/项目/选择在 gremlin 中获得组合顶点结果?
- mysql - Docker WordPress 图像无法连接到数据库
- vba - 添加新字段后 MS Access 错误 2105“您无法转到指定的记录”
- powershell - 创建使用 PowerShell 脚本的 GitHub 操作