So ändern Sie den hintergrund einer Schaltfläche mit JavaScript?
Möchte ich den hintergrund ändern-Bild für einen button mit Javascript. Hier ist, was ich bin versucht derzeit, aber Sie ist fehlerhaft.
HTML-code -
<tr id="Rank1">
<td><button class="darkSquare"></button></td>
<td><button class="lightSquare" ></button></td>
<td><button class="darkSquare" ></button></td>
<td><button class="lightSquare" ></button></td>
<td><button id="e1" class="darkSquare" ></button></td>
<td><button class="lightSquare" ></button></td>
<td><button class="darkSquare" ></button></td>
<td><button class="lightSquare"> </button></td>
</tr>
JavaScript-Code
initializer();
function initializer()
{
var tableRow = document.getElementById("Rank1");
var buttons = tableRow.getElementsByTagName("button");
for(b in buttons)
{
console.log(b.toString());
b.style.backgroundImage = "url('darkSquare.jpg')";
}
}
In der Konsole, bekomme ich eine Fehlermeldung.b.Formatvorlage nicht definiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
for (... in ...)
Schleifen nicht so wie in JavaScript, die es sein solltefor (... in ...)
tatsächlich iteriert über alle "Mitglieder" des ObjektszB. mit
var x = {a: 1, b: 2, c: 3}
imfor(var m in x) console.log(m)
produzierenes Art von arbeiten mit arrays, da Sie der Auffassung ist, die Indizes, die Mitglieder wie diese:
da es geben Ihnen die Indizes, als wären Sie Mitglieder, die Sie nicht erkennen kann. der Fallstrick ist:
Faustregel: verwenden Sie nur
for (... in ...)
beim Durchlaufen der Mitglieder in einem Objekt verwendenfor (var i = 0; i < array.length; i++)
bei der Verwendung von arraysSie können immer betrügen und verwenden:
for (var b in buttons) buttons[b].style...
aber nicht sagen, was Sie denken, es liest meine bearbeiteten Kommentar oben^ aber was es bricht, istfor (... in ...)
nicht einen iterator, wie es bei anderen Sprachen (java, c#, etc...).stuff
als eine expando-Mitglied auf das Objekt, das der TypArray
in der Zeilex.stuff = 'boo!';
, denken Sie daran, ALLE JavaScript-Objekte unterstützen expando-Eigenschaften.Sollten Sie Ihren Kreislauf so
Die Schleife, die Sie verwendet Tasten zuweisen in eine variable b ist. Da Sie nicht verwenden die hasOwnProperty-Funktion, können Sie diese Schleife ergeben sich auch andere Daten, die Sie vielleicht nicht wollen.
Konnte man auch mit der for-in-Schleife als so
bei der Verwendung
for ( ... in .... )
der erste parameter ist der key im array, so dass Sie haben, um es so zu benutzen:Beispiel arbeiten in jsFiddle