私のクラス割り当てでは、私が参照しているスクリプトにdefer
タグを使用したいと考えていますが、これは画像のnaturalWidth
がjsファイルの実行順序のために未定義になります。なぜnaturalHeightまたはnaturalWidthは `undefined`を返しますか?
var catImageWidth = document.getElementById("cat-image").naturalWidth;
var birdImage = document.getElementById("bird-image");
birdImage.width = catImageWidth;
だから私はこの試みた:
を私のHTMLは <script src="scripts/script.js" defer="defer"></script>
私のJS(割り当てがdefer="defer"
を<head>
にそれを置くが、使用するために私を望んでいる)の頭の中でこのラインを持っています
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`
birdImage.width
の割り当ては、このコード行ru ns前にcatImage.onload
実際に発生します。これは、私がをfunction
の範囲内に割り当てることを奴隷にしていることを意味しますか?catImage.onload
?
P.S.私はcatImage.onload =() => { //block of code }
のES6を試みたが、これは動作していないようだ。
をこれはまだ私は 'defer'タグを持っているにもかかわらず発生する必要がありますか?私は、DOMがロードを完了したか、またはイメージアセットがその一部とはみなされないのを待機するスクリプトを延期すると思ったのですか? – simmonson
上記の私の質問にあるように、defer = "defer" –
で動作するはずです。だからなぜそれが実際に「延期」しないのか分からない。 – simmonson