2017-02-21 80 views
0

我想找到一個div的innerHTML在一個數組中。我正在做一個15滑塊遊戲(它將一個4x4格子打亂並且你需要安排它回來)。我能夠成功獲取1-15的圖塊編號(innerHTML),但是當我嘗試找到它在全局數組中的位置(非重複值0-15,0代表空白值)時,它只返回-1。你能看到我這樣做有什麼問題嗎?我使用indexOf有什麼問題?

var grid = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ,15 ,0]; 

function move() { 
    var tileNum = this.innerHTML; 
    var ind = grid.indexOf(tileNum); 
    var blankInd = grid.indexOf(0); 
    console.log(tileNum); 
    console.log(ind); 
    console.log(blankInd); 
} 
+0

你傳遞的字符串。將其轉換爲數字。 – Shubham

回答

2

.innerHTML屬性返回一個字符串。你需要將其轉換爲數字或將不匹配的數字數組元素("1" !== 1):

// using unary plus operator: 
var tileNum = +this.innerHTML; 
// OR: 
var tileNum = Number(this.innerHTML); 
1

內部HTML總是返回一個字符串值作爲結果。在查找索引之前,您必須將其解析爲int。

<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script> 
 
     var grid = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ,15 ,0]; 
 

 
\t \t function move() { 
 
\t \t \t var tileNum = "5"; 
 
\t \t \t var ind = grid.indexOf(parseInt(tileNum)); 
 
\t \t \t var blankInd = grid.indexOf(0); 
 
\t \t \t console.log(tileNum); 
 
\t \t \t console.log(ind); 
 
\t \t \t console.log(blankInd); 
 
\t \t } 
 
     
 
     move(); 
 
    </script> 
 
</head> 
 
</html>

0

只是解析字符串到數字,因此將工作

var grid = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ,15 ,0]; 
 

 
function move() { 
 
\t var tileNum = parseInt(this.innerHTML); 
 
\t var ind = grid.indexOf(tileNum); 
 
\t var blankInd = grid.indexOf(0); 
 
\t console.log(tileNum); 
 
\t console.log(ind); 
 
\t console.log(blankInd); 
 
} 
 
move();