element Breite ist undefiniert auf Dokument bereit
Ich versuche zu erhalten ein element Breite mit dem folgenden code direkt vor der </body>
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
var diff = $('div.canvas img.photo').get(1).width;
console.log(diff);
});
</script>
aber es loggt nicht definiert. Allerdings, wenn ich $('div.canvas img.photo').get(1).width
direkt in das Chrome/Firebug-Konsole, es gibt die richtige Breite. Das Bild wird nicht geladen mit Javascript, also sollte, wenn das Dokument fertig feuert. Was mache ich falsch?
- Hinzufügen
console.log(diff);
zwischen den beiden Linien und du wirst sehen was falsch ist. - Fuzz:
console.log(diff.width);
// sieht Tippfehler - Ooops, jetzt editiert.
- Warum verwenden Sie
$('div.canvas img.photo').get(1).width
und nicht$('div.canvas img.photo').eq(1).width()
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, das sollte nicht sein. Dokument.bereit feuert, wenn alle HTML geladen wurde, aber nicht die Bilder. Wenn Sie möchten, zu warten, bis alle Bilder geladen sind, verwenden Fenster.Last.
Beispiel:
Auch, wie einige Leute haben darauf hingewiesen, Sie waren der Versuch, die Eigenschaft ".Breite" zweimal.
Wenn überhaupt möglich, richten Sie eine Breite auf, die imagetags in CSS. So können Sie sicher verwenden-Dokument.bereit für Ihren code. Mit Fenster.die Last wird natürlich verzögern die Ausführung des Skripts, könnte eine zweite sein könnte, zehn, je nach der Geschwindigkeit des clients Verbindung, und die Menge des Inhalts auf Ihrer Seite. Dies könnte zu ungewollten Sprüngen und zittern, wenn Sie gerade ausführen jedes styling.
img nicht geladen werden auf DOM-ready. docs:
änderung:
Bild Breite würde nur zur Verfügung, wenn seine vollständig geladen wurde.
jQuery unterstützt onload-Ereignis auf alle Bilder zu.
Können Sie verwenden,
Das problem ist, dass dein Bild noch nicht geladen ist, wenn Sie versuchen, um seine Abmessungen. Zu machen, arbeiten, wickeln Sie Ihren code in
$(window).load
. Oder eine andere option. Wenn Sie wissen, die Größe des Bildes können Siewidth
undheight
Attribute, dann ist es zur Arbeit zu gehen, sogar in DOMContentLoaded. Manchmal ist es besser, weil onload-Ereignis länger dauert, bis das Feuer dann 'DOMContentLoaded'.Sonst müssten Sie
$(window).load
siehe @Andreas Carlbom Antwort.