0

试图构建一个 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 (炸弹检查中的那个)总是返回 -1 天气或不是炸弹(我用 console.log 检查哪些 r 炸弹)你可以看到我在同一个脚本中使用了类似的 indexOf 检查,并且它工作得很好请帮助我

4

1 回答 1

4

正是因为这条线

var boxNum = event.id; //这会返回id属性的字符串

然后你以后把它当作一个数字。

而不是那条线使用这个

var boxNum = parseInt(event.id); //这将返回一个您可以使用的数字
于 2013-08-15T04:42:14.407 回答