试图构建一个html扫雷游戏,我是一个非常初学者,我试图获得一个onclick来检查该框是否等于炸弹点的值
javascript我用来填充我的“table”元素(id为“grid”)给每个box / td一个id 0-99
var gameBox = "";
for ( var i = 0 ; i < 10 ; i++ ) {
gameBox += "<tr>";
for ( var j = 0 ; j < 10 ; j++ ) {
var idValue = i * 10 + j;
gameBox += "<td class = 'box' id = '" + idValue + "' onclick = 'process(this);' ></td>";
}
gameBox += "</tr>";
}
document.getElementById("grid").innerHTML = gameBox;
继承炸弹阵列初始化器,使其长度为10
var bomb = [];
for ( var i = 0 ; i < 10 ; i++ ) {
bomb[i] = 0;
}
用户点击开始按钮后(继承人html:)
<input type="button" class="MtopSmall" value="start!" name = "startButton" onclick = "start();" >
它们触发启动功能,该功能分配10个不同的随机数0-99
function start() {
for ( var i in bomb ) {
var number = Math.floor( Math.random() * 100 );
if( bomb.indexOf(number) >= 0 ){
reassign(i);
} else {
bomb[i] = number;
}
}
console.log(bomb);
}
function reassign(i) {
var number = Math.floor( Math.random() * 100 );
if( bomb.indexOf(number) >=0)
{
reassign(i);
} else {
bomb[i] = number;
}
}
然后当他们点击一个框(td)时,它会触发过程函数
function process(clicked) {
//change box look
clicked.style.backgroundColor = "#ffffff";
clicked.style.border = "1px solid black";
bombCheck(clicked);
}
触发bombCheck()
bombCheck(event)
var boxNum = event.id;
function bombCheck(event) {
if ( bomb.indexOf(boxNum) >=0 ) {
event.innerHTML = "B";
alert("you clicked a bomb");
}
}
问题是最终的indexof(在bombcheck中的那个)总是返回-1天气或不是它的炸弹(并且我用console.log检查哪个r炸弹),你可以看到我在之前使用类似的indexOf检查相同的脚本,它工作得很好plz帮助我
答案 0 :(得分:4)
正是因为这条线
var boxNum = event.id; //this returns a STRING of the id attribute
然后您将其用作数字。
而不是该行使用此
var boxNum = parseInt(event.id); //this will return a NUMBER which you can use