【发布时间】:2021-05-21 20:15:58
【问题描述】:
所以正如标题所示,我正在尝试根据百分比显示图像。变量值越高,显示成功消息 + 正确图像的机会就越高。但由于某种原因,即使变量高到足以在 80% 的机会类别中,它也会继续显示失败的消息:
function mission1(user_power) {
if (user_power < 5) {
if (Math.random() < 0.3) {
document.getElementById('missionpopup').style.visibility = "visible"
document.getElementById('popupdarkness').style.visibility = "visible"
document.getElementById('missionsucces').style.visibility = "visible"
document.getElementById('missionsuccestext').style.visibility = "visible"
document.getElementById('missionsuccestext').innerHTML = "You have succesfully looted the house, as the house was empty you didn't run into any trouble."
document.getElementById('expgain').style.visibility = "visible"
document.getElementById('itemfound').style.visibility = "visible"
document.getElementById('approvalimg').style.visibility = "visible"
}
} else if (user_power == 5) {
if (Math.random() < 0.5) {
document.getElementById('missionpopup').style.visibility = "visible"
document.getElementById('popupdarkness').style.visibility = "visible"
document.getElementById('missionsucces').style.visibility = "visible"
document.getElementById('missionsuccestext').style.visibility = "visible"
document.getElementById('missionsuccestext').innerHTML = "You have succesfully looted the house, as the house was empty you didn't run into any trouble."
document.getElementById('expgain').style.visibility = "visible"
document.getElementById('itemfound').style.visibility = "visible"
document.getElementById('approvalimg').style.visibility = "visible"
}
} else if (user_power > 5) {
if (Math.random() < 0.8) {
document.getElementById('missionpopup').style.visibility = "visible"
document.getElementById('popupdarkness').style.visibility = "visible"
document.getElementById('missionsucces').style.visibility = "visible"
document.getElementById('missionsuccestext').style.visibility = "visible"
document.getElementById('missionsuccestext').innerHTML = "You have succesfully looted the house, as the house was empty you didn't run into any trouble."
document.getElementById('expgain').style.visibility = "visible"
document.getElementById('itemfound').style.visibility = "visible"
document.getElementById('approvalimg').style.visibility = "visible"
}
} else {
document.getElementById('missionpopup').style.visibility = "visible"
document.getElementById('popupdarkness').style.visibility = "visible"
document.getElementById('missionfailed').style.visibility = "visible"
document.getElementById('missionfailuretext').style.visibility = "visible"
document.getElementById('denialimg').style.visibility = "visible"
}
}
我在这段代码中做错了什么?
【问题讨论】:
-
大量重复代码,是您做错的主要事情。使用简短的 if-else if 块根据功率将某个变量设置为 0.5 或 0.8 等,然后执行一次 Math.random() 检查。此外,前三个块已经覆盖了 user_power 的所有可能值,因此最后一个 else 块将永远不会运行。
-
你能举个小例子吗,因为我不是 100% 确定你的意思。最后一个 else 块正在运行,它是我在帖子中提到的唯一显示出来的东西。
-
啊,谢谢,我不知道你会这样写。
-
别担心,当我还是个初学者的时候,我写的代码不是这样的:)
标签: javascript image math display percentage