javascript - 有没有更有效的方法来编写我的 JS?
问题描述
所以我有一排按钮
<form class="form">
<div class="button-box">
<div class="centered-buttons">
<input type="radio" name="game" id="rock-button" class="radio" />
<label for="rock-button">rock</label>
<br />
<input type="radio" name="game" id="paper-button" class="radio" />
<label for="paper-button">Paper</label>
<br />
<input
type="radio"
name="game"
id="scissor-button"
class="radio"
/>
<label for="scissor-button">Scissor</label>
</div>
</div>
<input type="submit" id="submit-btn" value="submit" />
</form>
当按下特定按钮(例如岩石)时,将显示岩石的图像
<figure class="image-box">
<img
src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.mm.bing.net%2Fth%3Fid%3DOIP.DYZMAUANlCkZudy3ecHIjgHaFj%26pid%3DApi&f=1"
class="image"
id="rock-user"
/>
<img
src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.nsZw2P8S_bGSFs1D8tUWQwHaHZ%26pid%3DApi&f=1"
alt=""
class="image"
id="paper-user"
/>
<img
src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.dcE8dnULs2C6_wjBABvd4QHaEk%26pid%3DApi&f=1"
alt=""
class="image"
id="scissor-user"
/>
</figure>
但是我的代码很长,可能有点重复。我怎样才能让我的 JS 更有效?
let rock = document.getElementById("rock-button")
rock.addEventListener("click", changePicToRock)
function changePicToRock(e){
document.getElementById("paper-user").style.display = "none"
document.getElementById("scissor-user").style.display = "none"
document.getElementById("rock-user").style.display = "block"
}
let paper = document.getElementById("paper-button")
paper.addEventListener("click", changePicToPaper)
function changePicToPaper(e){
document.getElementById("paper-user").style.display = "block"
document.getElementById("scissor-user").style.display = "none"
document.getElementById("rock-user").style.display = "none"
}
let scissor = document.getElementById("scissor-button")
scissor.addEventListener("click", changePicToScissor)
function changePicToScissor(e){
document.getElementById("paper-user").style.display = "none"
document.getElementById("scissor-user").style.display = "block"
document.getElementById("rock-user").style.display = "none"
}
简而言之,当按下按钮时,与该按钮相关的图像将获得该属性display: block;
,而我不想显示的所有其他图像都将获得该属性display: none;
解决方案
尝试这个
const game = [{ title: 'rock', values: ['none', 'none', 'block'] },
{ title: 'paper', values: ['block', 'none', 'none'] },
{ title: 'scissor', values: ['none', 'block', 'none'] }];
game.forEach(item => {
const button = document.getElementById(`${item.title}-button`);
button.addEventListener("click", () => {
console.log(item);
document.getElementById("paper-user").style.display = item.values[0]
document.getElementById("scissor-user").style.display = item.values[1]
document.getElementById("rock-user").style.display = item.values[2]
})
})
推荐阅读
- c# - How can I fix a warning saying something is missing in instantiate?
- c# - 更新在 Entity Framework Core 中将值设置为 null
- python - 在单独的表单值发生更改时更新 django 模型表单值
- javascript - a href 部分不适用于 safari 和 firefox
- java - 在 Java 中,什么是比 stream().forEach() 更有效但仍使用流操作的方法?
- google-cloud-platform - 无法从所有角色中包含服务帐户的计算引擎访问 bigquery
- swift - 复制和粘贴时如何阻止Textview也复制格式?
- wso2 - WSO2 API Manager SSL/TLS 证书安装
- flutter - 如何在 table_calendar 上获取多天事件
- c - 如何比较文件中的字符串和标准输入字符串