2016-10-11 7 views
2

Ich versuche, die Breite eines Elements zu ändern, wenn das Fenster in der Größe geändert wird. Ich versuche, die Breite des Elements zu erhalten, aber es gibt NaN zurück. Dies ist mein Code für get Breite und zu protokollieren:Element Rückgabe NaN als Breite

var widthItemMedia = parseInt($(".my-class .list-block .item-media i").css('width')); 
console.log("Previous: " + lastWindowWidth + " Current: " + windowWidth + " Width " + widthItemMedia); 
+0

NaN kann nur entstehen, wenn das Ergebnis nicht definiert, Boolean oder Null ist. Überprüfen Sie, ob der Selektor gültig ist – K3v1n

+0

Können Sie Ihren 'css'- und' html'-Code auch teilen? Es wäre immer eine gute Idee, eine Fiedel [hier] (https://jsfiddle.net/) zu erstellen. – bash0ne

+2

@ K3v1n das ist falsch. Wenn der Wert für die Breite "auto" ist, wird das Ergebnis (vom Aufruf von "parseInt()") "NaN" sein. – Pointy

Antwort

6

Vom jQuery documentation:

Der Unterschied zwischen .css(width) und .width() ist, dass letztere kehrt eine einheitslose Pixelwert (zum Beispiel 400), während ersterer einen Wert mit intakten Einheiten zurückgibt (zum Beispiel 400px). Die Methode .width() wird empfohlen, wenn die Breite eines Elements in einer mathematischen Berechnung verwendet werden soll. .width()

verwenden, wenn Sie möchten, eine Zahl mit arbeiten:

var widthItemMedia = $(".my-class .list-block .item-media i").width(); 

Sie brauchen nicht die parseInt() entweder. Die parseInt()-Funktion toleriert nicht-numerischen Stuff am Ende der Eingabezeichenfolge, so "20px" ist in Ordnung. Etwas wie "Auto" ist jedoch nicht in Ordnung. Die .width() Methode liefert Ihnen die tatsächliche Layoutbreite. Siehe auch die Methoden .innerWidth() und .outerWidth(), die je nach Situation manchmal die Antwort liefern, die Sie benötigen.

+0

Die Konsole gibt jetzt Folgendes zurück: 678 Aktuell: 1173 ElemWidth undefined –

+0

@ ВасяПупкин In der Frage gibt es nicht genug Code, um zu sehen, was das Problem ist; Die 'console.log() ', die Sie gepostet haben, enthält" ElemWidth "überhaupt nicht. – Pointy

Verwandte Themen