Ich bin neu in Javascript und ich erstelle eine "Push eine Tastaturtaste, um dieses schwarze Quadrat über" Art von Spiel. Ich versuche, herauszufinden, wie eine native JavaScript-Funktion erstellen, die ermöglicht:Auswahl Next HTML Sibling in Native Javascript
ein keypress einem <td>
Elemente die Klasse von „aktiv“ zu geben, die in der Leitung (oder Geschwister) als nächste zu einem <td>
, die bereits die Klasse hat "aktiv". Ich möchte auch das 'aktuelle' <td class="active">
Element haben, um seine "aktive" Klasse zur gleichen Zeit zu entfernen.
Bisher habe ich es geschafft, eine Funktion zu erstellen, die einen Klick auf <td>
ermöglicht und die Klasse "active" auf <td>
hinzufügt, während gleichzeitig jede "aktive" Klasse aus den umgebenden Geschwistern entfernt wird. Anstatt zu klicken, möchte ich der nächsten <td>
"aktiv" geben, wenn Sie den Buchstaben 'm' drücken.
Entschuldigt, wenn ich schlecht bin zu erklären: hier ist mein Code:
var racerTable = document.getElementsByClassName("racer-table");
var p1items = document.getElementById("player1-strip").querySelectorAll("td");
var lastp1 = p1items[p1items.length-1];
for (var i = 0; i < p1items.length; i++) {
p1items[i].addEventListener("click", player1Race);
}
function player1Race() {
for (var i = 0; i < p1items.length; i++) {
p1items[i].className = "";
}
// The expression below is where I need help
this.className = "active";
\t if (lastp1.className === "active") {
\t alert("Player One Won!");
} else {
}
}
.racer-table td {
background-color: #ededed;
height: 50px;
width: 50px;
}
.racer-table td.active {
background-color: black;
}
<body>
<table class="racer-table">
<tr id="player1-strip">
<td class="active"></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
JSFiddle:
https://jsfiddle.net/sean_johnson/bgdb716d/139/
Ersetze 'this' im click-Ereignis mit' document.querySelectorAll ("td.active"); 'schau auch in' elm.nextElementSibling', es kann dir ein wenig Tipparbeit ersparen ... – dandavis
Zellen in einer Tabelle haben a [* CellIndex *] (https://www.w3.org/TR/html5/tabular-data.html#dom-tdth-cellindex). Wenn sich die nächste zu besuchende Zelle in derselben Zeile befindet, rufen Sie einfach die mit dem nächsthöheren Index ab. Z.B. 'row = cell.parentNode; nextCell = row.cells [cell.cellIndex + 1] '. Anstatt einen Listener auf jede Zelle zu setzen, sollten Sie einen einzelnen Listener in die Tabelle einfügen (suchen Sie nach Ereignisdelegierung). – RobG