jQuery / Javascript - Bir piksel değerini (20px) bir sayı değerine (20) nasıl dönüştürebilirim


101

JQuery'nin birim dizeleri sayılara ayrıştırmak için yardımcı bir yöntemi olduğunu biliyorum. Bunu yapmak için jQuery yöntemi nedir?

var a = "20px";
var b = 20;
var c = $.parseMethod(a) + b;

parseInt (a, 10); a bir
— dizeyse

Yanıtlar:


185

Bunun için jQuery gerekmez, Plain Ol 'JS (tm) bunu yapar,

parseInt(a, 10);

4
Her gün seni her geçen gün daha çok seviyorum javascript
— James Westgate

1
Bu, "20pt" veya "20em" için çalışmaz. parseInt ("20pt") == 20! Posterin ihtiyacı olan tek şey bu olabilir, ancak örneğin X ("20em") kullanabilmek ve piksel cinsinden gerçek genişliği geri alabilmek istiyorum.
— Lawrence I. Siden

2
@lsiden: işe yarıyor. parseInt("20em", 10) === 20ve parseInt("20pt", 10) === 20. En sevdiğiniz tarayıcı konsoluna herhangi bir ifadeyi yapıştırmaktan çekinmeyin veya bu çok kısa örneğe bakın . Yaşadığınız sorun ne olursa olsun, kodunuzun başka bir yerinde yatmaktadır.
— Andy E

6
Bir yan not, parseIntişlev aslında bir tamsayı karakter dizisinin sonuna eklenen tüm tam sayı olmayan karakterleri göz ardı edecektir. parseInt('234sdfsdf') == 234
— Chris W.

3
@AndyE: Isiden, parseInt'in em değerlerini (veya pt veya diğerlerini) eşdeğer piksel değerlerine dönüştürmeyeceğini söylüyordu, bu bazı insanların ihtiyaç duyabileceği şeydi.
— LeartS

30

Daha genel olarak, parseFloatkayan noktalı sayıları doğru şekilde işlerken parseIntönemli basamakları sessizce kaybedebilir:

parseFloat('20.954544px')
> 20.954544
parseInt('20.954544px')
> 20


5
$.parseMethod = function (s)
{
    return Number(s.replace(/px$/, ''));
};

bunun jQuery ile nasıl ilişkili olduğunu bilmiyorum


0

Kazdığım için özür dilerim ama:

var bar = "16px";

var foo = parseInt(bar, 10); // Doesn't work! Output is always 16px
// and
var foo = Number(s.replace(/px$/, '')); // No more!

parseInt ('16px', 10); Google Chrome geliştirici konsolunda benim için çalış
— Thomas

-2
$(document).ready(function(){<br>
    $("#btnW1").click(function(){<br>
        $("#d1").animate({<br>
            width: "+=" + x,

        });
    });

X değişkenini jquery kullanarak bir piksel değeri I ile tanımlamaya çalışırken + = 'yi tırnak işaretleri arasına koyuyorum. Genişliğe sahip olmak yerine: '+ = x', bu x'in bir sayıdan ziyade bir dize olduğunu düşündüğü için çalışmaz. Umarım bu yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.