Во-первых, если вы получаете изображение из документа, вам не нужно звоните new Image
.
Вы: do необходимо подождать, пока не будет элемент img
, и до img
груза.
Это проще, если вы добавляете изображение со сценарием, и зацепить load
событие перед тем установка src
:
<body>
<div id="ad">
<div id="banner"></div>
</div>
<script>
var img = document.createElement('img')
img.className = "top";
img.id = "top";
img.onload = function() {
alert(this.width + 'x' + this.height);
};
img.src="frame_2.jpg";
document.getElementById("banner").appendChild(img);
</script>
</body>
Вы можете сделать это с изображением в формате HTML, хотя, вы просто должно допускать возможность изображения может быть уже загружено, прежде чем зацепил событие:
<body>
<div id="ad">
<div id="banner">
<img class="top" id="top" src="frame_2.jpg"/>
</div>
</div>
<script>
var img = document.getElementById("top");
img.onload = loaded;
if (img.complete) {
loaded();
}
function loaded() {
if (img) {
alert(img.width + 'x' + img.height);
img.onload = null;
img = null; // Just as a marker in case of repeated calls
}
};
</script>
</body>
'this' не то, что вы думаете,' this' есть. –
Вы уверены, что хотите написать 'this'? – messy
См. [Этот вопрос] (http://stackoverflow.com/q/623172/135978) для альтернативных способов получения информации в зависимости от того, какую версию «ширины» и «высоты» вы интересуете. –