2013-08-15 4 views
0

пытается построить HTML тральщик игру им довольно много начинающих и им пытается получить OnClick, чтобы проверить, что окно равно значению бомбы пятнаJavascript массив IndexOf не работает

Javascript я использую для заполнения мой элемент «таблица» (с идентификатором «сетки») дает каждой коробке/TD идентификатор 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; 

Heres массив бомбы intializer придав ему длину 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"); 
    } 
} 

проблема заключается в том, что конечный индекс (тот, который находится в бомбардировке) всегда возвращает -1 погоду или не ее бомбу (и я проверяю, какие бомбы с помощью console.log), как вы можете видеть, я использовал аналогичный check-check index ранее в тот же сценарий, и он работает просто отлично плз помочь мне

+0

Вы, кажется, обрабатывать строку как число .. проверить ответ ниже – woofmeow

+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 
+0

спасибо я знал о ParseInt не знали .id вернулся я номер –

+0

спасибо, что он очень хорошо работает сейчас –

+0

Рад помочь. Желаем удачи в игре :) – woofmeow

Смежные вопросы