これを行うためのより良い解決策があるかどうかを知りたいです:
var img = new Image();
var div = document.getElementById('foo');
img.onload = function() {
div.innerHTML += '<img src="'+img.src+'" />';
};
img.src = 'path/to/image.jpg';
望ましい方法:
console.log(img); // <img src="path/to/image.jpg" />
div.innerHTML += img;
考え?
あなたが望むのはこれだと思います:
_var img = new Image();
var div = document.getElementById('foo');
img.onload = function() {
div.appendChild(img);
};
img.src = 'path/to/image.jpg';
_
ロード済みの画像オブジェクトが既にあります。 innerHTML
を使用してまったく新しいイメージオブジェクトを作成するのではなく、DOMに直接追加するだけです。
さらに、innerHTML
で_+=
_を使用すると、そこにあるすべてのオブジェクトを取得し、それらをHTMLテキストに変換し、そのテキストに追加し、すべての新しいDOMオブジェクトを作成するため、非常に無駄です-すべてを失う新しいオブジェクトを作成するときのイベントハンドラー。新しいDOMオブジェクトを既存のDOMオブジェクトのセットに追加するだけの方が効率的です。
さらに、document.getElementById()
は、その前に_#
_なしでidを取ります。
この方法を使用できます:
var img = new Image();
var div = document.getElementById('theDiv');
img.onload = function() {
div.appendChild(img);
};
img.src = 'path/to/image.jpg';