Kann das Laden von bestimmten img zunächst verhindert werden?
bearbeitet von
Hallo Linuchs,
meine 0,02 € wären dies:
Lass das src Attribut ganz weg. Mit der CSS-Regel
~~~css
img:not([src]) {
display:none;
}
~~~
verschwinden die Griffbilder dann automatisch aus der Anzeige.
Statt src="ukulele_griff_(0).png" würde ich
~~~html
<img data-griff="ukulele_griff_(0).png" alt="">
~~~
Ja, alt="", weil das Bild im uninitialisierten Zustand keine alternative Darstellung besitzt.
Beim Setzen der Tonart machst Du dann pro Bild dies (ich nehme an, da muss dann irgendwie passend der Griff (0) in den richtigen Akkord übersetzt werden) – bei 12 verschiedenen Akkorden gibt's dann entweder 12 replace-Aufrufe...
~~~js
bild.src = bild.dataset.griff.replace("(0)", tonart);
bild.alt = tonart;
~~~
... oder Du suchst Dir mit /(\d+)/ die Nummer raus und holst den passenden Akkord dafür aus einer Übersetzungstabelle.
~~~js
const akkorde = { '0': 'C', '1': 'D', '2', 'E', ... };
bild.src = bild.dataset.griff.replace(/\((\d+)\)/, (x, n) => akkorde[n]);
~~~
`/\((\d+)\)/` ist ein regulärer Ausdruck. Ich ziehe ihn mal etwas auseinander (funktioniert im Code nicht, weil die Spaces dann stören):
~~~
\( ( \d + ) \)
~~~
\( matcht die linke Klammer, \) die rechte Klammer. \d matcht Ziffern, das + sagt: 1-n Ziffern. Die Klammern um \d+ bewirken das Bilden einer Matchgruppe für die Ziffernfolge, auf die man im folgenden Callback zugreifen kann.
Dieser Callback, den replace als zweiten Parameter bekommt, erhält als ersten Parameter den vollständigen Match (x wäre bei griff_(0) also "(0)"), der zweite Parameter ist die erste geklammerte Matchgruppe, deshalb findet man in `n` den String `"0"` vor und damit bekommt man aus dem akkorde-Objekt das 'C'.
_Rolf_
--
sumpsi - posui - obstruxi