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.