Saya perlu melakukan perhitungan numerik berdasarkan properti CSS. Namun, ketika saya menggunakan ini untuk mendapatkan info:
$(this).css('marginBottom')
mengembalikan nilai '10px'. Apakah ada trik untuk hanya mendapatkan nomor bagian dari nilai tidak peduli apakah itu px
atau %
atau em
atau apa pun?
javascript
jquery
css
parsing
Tim Sheiner
sumber
sumber
/[^-\d\.]/g
parseInt
akan secara otomatis mengabaikan unit.Sebagai contoh:
sumber
parseInt
memperhitungkan kasus di mana Anda menerima nilai non-integer - seperti dalam jawaban maximelebreton .Dengan metode ganti, nilai css Anda adalah string, dan bukan angka.
Metode ini lebih bersih, sederhana, dan mengembalikan angka:
sumber
%
,em
)Bahkan jika marginBottom didefinisikan dalam mereka, nilai di dalam parseFloat di atas akan berada di px, karena itu adalah properti CSS yang dihitung.
sumber
sumber
px
tetapi diberikan,em
Anda perlu mengonversi.Saya menggunakan plugin jQuery sederhana untuk mengembalikan nilai numerik properti CSS tunggal.
Ini berlaku
parseFloat
untuk nilai yang dikembalikan olehcss
metode default jQuery .Definisi Plugin:
Pemakaian:
sumber
Mari kita asumsikan Anda memiliki properti margin-bawah yang diatur ke 20px / 20% / 20em. Untuk mendapatkan nilai sebagai angka ada dua opsi:
Pilihan 1:
Fungsi parseInt () mem-parsing string dan mengembalikan integer. Jangan mengubah 10 yang ditemukan dalam fungsi di atas (dikenal sebagai "radix") kecuali Anda tahu apa yang Anda lakukan.
Contoh Output akan menjadi: 20 (jika margin-bottom diatur dalam px) untuk% dan em itu akan menampilkan angka relatif berdasarkan Elemen Induk / ukuran Font saat ini.
Opsi 2 (Saya pribadi lebih suka opsi ini)
Contoh Output akan menjadi: 20 (jika margin-bottom diatur dalam px) untuk% dan em itu akan menampilkan angka relatif berdasarkan Elemen Induk / ukuran Font saat ini.
Fungsi parseFloat () mem-parsing string dan mengembalikan angka floating point.
Fungsi parseFloat () menentukan apakah karakter pertama dalam string yang ditentukan adalah angka. Jika ya, ia mem-parsing string hingga mencapai akhir angka, dan mengembalikan angka sebagai angka, bukan sebagai string.
Keuntungan Opsi 2 adalah jika Anda mendapatkan angka desimal yang dikembalikan (mis. 20,32322px), Anda akan mendapatkan angka yang dikembalikan dengan nilai di belakang titik desimal. Berguna jika Anda membutuhkan nomor tertentu yang dikembalikan, misalnya jika margin-bottom Anda ditetapkan dalam em atau %
sumber
parseint
akan memotong nilai desimal apa pun (misalnya1.5em
memberi1
).Coba
replace
fungsi dengan regex misalnyasumber
Id go for:
sumber
margin
apakah itu negatif atau positif!Cara paling sederhana untuk mendapatkan lebar elemen tanpa unit adalah:
Sumber: https://api.jquery.com/width/#width2
sumber
Anda dapat menerapkan plugin jQuery yang sangat sederhana ini :
Definisi Plugin:
Ini tahan terhadap
NaN
nilai-nilai yang mungkin terjadi di versi IE lama (akan kembali0
sebagai gantinya)Pemakaian:
Nikmati! :)
sumber
var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result;
Untuk meningkatkan jawaban yang diterima, gunakan ini:
sumber
Jika hanya untuk "px", Anda juga dapat menggunakan:
sumber
Harus menghapus unit sambil mempertahankan desimal.
sumber
menggunakan
yang mengembalikan array. indeks pertama mengembalikan nilai margin bawah (contoh 20 untuk 20px) dan indeks kedua mengembalikan unit margin bawah (contoh px untuk 20px)
sumber