Meine Klassenzuordnung will, dass mir den defer
Tag für das Skript verwenden, ich bin Referenzierung, aber dies führt zu dem Bild des naturalWidth
in meiner JS-Datei aufgrund der Reihenfolge der Ausführung nicht definiert werden.Warum gibt naturalHeight oder naturalWidth `undefined` zurück?
Mein HTML hat diese Zeile im Kopf (Zuordnung will, dass ich es in den <head>
setzen, aber defer="defer"
verwenden) <script src="scripts/script.js" defer="defer"></script>
Meine js:
var catImageWidth = document.getElementById("cat-image").naturalWidth;
var birdImage = document.getElementById("bird-image");
birdImage.width = catImageWidth;
So habe ich versucht, dies:
var catImage = document.getElementById("cat-image");
var birdImage = document.getElementById("bird-image");
var catImageWidth;
catImage.onload = function() {
catImageWidth = this.naturalWidth;
console.log(catImageWidth) //logs 600
}
birdImage.width = catImageWidth; //logs `undefined`
ich denke, dass die Zuweisung von birdImage.width
nicht definiert ist, da diese Zeile Code ru ns vor catImage.onload
passiert tatsächlich. Bedeutet dies, dass ich Sklave bin auf der Zuweisung birdImage.width
im Rahmen der function
von catImage.onload
?
P.S. Ich versuchte ES6 von catImage.onload =() => { //block of code }
, aber das schien nicht zu funktionieren.
Diese noch einmal geschehen muss, obwohl ich die 'defer' Tag haben? Ich dachte, dass die Verschiebung des Skripts warten würde, bis das DOM geladen ist, oder werden Bild-Assets nicht als Teil davon betrachtet? – simmonson
Es sollte mit Zurückstellungs arbeiten = –
„verschieben“, das ist das, was ich habe, wie oben in meiner Frage gezeigt. Ich bin also nicht sicher, warum es eigentlich nicht "aufschiebt". – simmonson