2017-02-21 4 views
0

Ich versuche zu finden, wo die innerHTML eines Div in einem Array ist. Ich mache ein 15-Slider-Spiel (wo es ein 4x4-Gitter scrambelt und du es zurückordnen musst). Ich bin in der Lage, die Kachel Nummer (die innerHTML) zu bekommen, die 1-15 ist, aber wenn ich versuche und finde, wo es in einem globalen Array ist (mit nicht wiederholenden Werten 0-15, wobei 0 den Leerwert darstellt), es gibt nur -1 zurück. Kannst du sehen, was falsch ist mit dem, was ich mache?Was ist falsch an meiner Verwendung von 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

Sie vorbei String arbeiten. Konvertiere es in Nummer. – Shubham

Antwort

2

Die .innerHTML-Eigenschaft gibt eine Zeichenfolge zurück. Sie müssen sie in eine Zahl konvertieren, oder es wird die numerischen Array-Elemente nicht überein ("1" !== 1):

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

Inner HTML gibt immer einen String-Wert als Ergebnis. Sie müssen das zu int analysieren, bevor Sie den Index finden.

<!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

einfach die Zeichenfolge Zahl parsen, so dass es

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();

Verwandte Themen