2017-02-21 4 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();

関連する問題