jQuery / Javascript-ピクセル値(20px)を数値(20)に変換する方法


101

jQueryには単位文字列を数値に解析するためのヘルパーメソッドがあることを知っています。これを行うためのjQueryメソッドは何ですか?

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

parseInt(a、10); aが文字列の場合はNaNを返します
vanduc1102 '28

回答:


184

これにはjQueryは必要ありません。PlainOl 'JS(tm)が実行します。

parseInt(a, 10);

4
私はあなたをますますjavascriptを愛しています
ジェームズウェストゲート

1
これは「20pt」または「20em」では機能しません。parseInt( "20pt")== 20!これがポスターに必要なすべてのことかもしれませんが、たとえばX( "20em")を使用して、ピクセル単位で実際の幅を取得できるようにしたいと考えています。
Lawrence I. Siden

2
@lsiden:機能します。parseInt("20em", 10) === 20parseInt("20pt", 10) === 20。どちらの表現もお好きなブラウザのコンソールに貼り付けてください。または、この非常に短い例をご覧ください。あなたが抱えているどんな問題でも、コードのどこかにあります。
アンディE

6
余談ですが、parseInt関数は実際には整数文字の文字列の末尾に追加された非整数文字を無視します。parseInt('234sdfsdf') == 234
クリスW.

3
@AndyE:Isidenは、parseIntがem値(またはptなど)を同等のピクセル値に変換しないことを言っていました。
LeartS 2014

30

より一般的にparseFloatは、浮動小数点数を正しく処理しますが、parseInt有効数字を静かに失う可能性があります。

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


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

これはjQueryとどのように関連していますが、わかりません


0

掘り下げてごめんね、でも:

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開発コンソールで私のために働く
トーマス

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

        });
    });

変数xをピクセル値Iで識別しようとするとき、jqueryを使用して+ =を引用符で囲みます。幅を持たせる代わりに、「+ = x」。xは数値ではなく文字列であると見なされるため機能しません。うまくいけば、これが役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.