javascript - 如何通过 JavaScript 中的条件触发警报框?
问题描述
我是 JavaScript 语言的新手,而且我已经在游戏上工作了几天了。游戏是当用户点击灯泡时,它会亮起。每个灯泡都会影响另一个灯泡。我的问题是,我检查所有灯泡是否都打开的代码似乎不起作用。如果游戏已经完成,应该有一个警告框。
我试图有一些功能,然后在 html 正文中调用它。
function win() {
var allBulb = [document.getElementById("b1"),
document.getElementById("b2"),
document.getElementById("b3"),
document.getElementById("b4"),
document.getElementById("b5"),
document.getElementById("b6"),
document.getElementById("b7"),
document.getElementById("b8"),
document.getElementById("b9")];
var index = 0;
for(var i = 0; i < allBulb.length; i++) {
if (allBulb[i].src.match("turnON")) {
index += 1;
}
}
if (index == 9) {
alert("Congratulations!");
}
}
<script>win();</script>
//this is how I call my function in the html body
<script>win();</script>
对于那些询问的人,这是我的 b1 到 b9 代码:
<div class = "main">
<table>
<tr>
<td><img id = "b1" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b1()"></td>
<td><img id = "b2" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b2()"></td>
<td><img id = "b3" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b3()"></td>
</tr>
<tr>
<td><img id = "b4" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b4()"></td>
<td><img id = "b5" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b5()"></td>
<td><img id = "b6" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b6()"></td>
</tr>
<tr>
<td><img id = "b7" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b7()"></td>
<td><img id = "b8" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b8()"></td>
<td><img id = "b9" src = "turnOFF.png" style = "width:100px"
onclick = "bulbFunc.b9()"></td>
</tr>
</div>
这是我打开和关闭灯泡的功能。顺便说一句,这些灯泡表示为按钮。
const bulbFunc = (() => {
return {
b1: () => {
btnB1 = [document.getElementById("b1"),
document.getElementById("b5")];
switchLoop(btnB1);
},
b2: () => {
btnB2 = [document.getElementById("b2"),
document.getElementById("b4"),
document.getElementById("b6")];
switchLoop(btnB2);
},
b3: () => {
btnB3 = [document.getElementById("b3"),
document.getElementById("b2")];
switchLoop(btnB3);
},
b4: () => {
btnB4 = [document.getElementById("b4")];
switchLoop(btnB4);
},
b5: () => {
btnB5 = [document.getElementById("b5"),
document.getElementById("b8")];
switchLoop(btnB5);
},
b6: () => {
btnB6 = [document.getElementById("b6"),
document.getElementById("b7")];
switchLoop(btnB6);
},
b7: () => {
btnB7 = [document.getElementById("b7")];
switchLoop(btnB7);
},
b8: () => {
btnB8 = [document.getElementById("b8")];
switchLoop(btnB8);
},
b9: () => {
btnB9 = [document.getElementById("b9"),
document.getElementById("b4")];
switchLoop(btnB9);
}
};
})();
解决方案
据我了解,以下是相同的 js 和 HTML:我无法上传图片。turnON.png 和 turnOFF.png 分别用于打开和关闭灯泡。
当您单击最后一个灯泡时,还会显示警报框。
function isBulbON(img){
return img.src.indexOf("turnON.png") > -1;
}
function toggle(sender){
sender.src = isBulbON(sender) ? "turnOFF.png" : "turnON.png";
if(Array.from(document.getElementsByClassName("bulb")).every(isBulbON)===true){
alert("All bulb ON");
}
}
<div class = "main">
<table>
<tr>
<td><img class="bulb" id = "b7" src = "turnOFF.png" style = "width:100px"
onclick = "toggle(this)"/></td>
<td><img class="bulb" id = "b8" src = "turnOFF.png" style = "width:100px"
onclick = "toggle(this)"/></td>
<td><img class="bulb" id = "b9" src = "turnOFF.png" style = "width:100px"
onclick = "toggle(this)"/></td>
</tr>
</table>
</div>
推荐阅读
- javascript - 比较对象数组中的项目
- c++ - 代码编辑器实现缺少 Qt 的 QFontMetrics::horizontalAdvance()
- json - 如何按名称过滤键,然后使用 jq 访问嵌套对象
- php - Laravel Web 套接字无法在生产服务器上运行
- ios - Skype ios app sdk - 需要访问联系人
- json - 使用 VB 或 VBA 从 Http 请求中获取 JSON 响应
- javascript - 如何选择附加标记的航点?
- php - 未知:输出处理程序“ob_gzhandler”与 php-phantomjs 中的“zlib 输出压缩”冲突
- sql - 在 python 中使用 cx_Oracle 的一个事务中有许多 SQL DML 语句
- r - 我在 RStudio 中找不到“编织”按钮