jQuery / Javascript - Come convertire un valore di pixel (20px) in un valore numerico (20)


101

So che jQuery ha un metodo di supporto per analizzare le stringhe di unità in numeri. Qual è il metodo jQuery per farlo?

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

parseInt (a, 10); restituisci NaN se a è una stringa
vanduc1102

Risposte:


184

Nessun jQuery richiesto per questo, Plain Ol 'JS (tm) lo farà,

parseInt(a, 10);

4
Ogni giorno in ogni caso ti amo sempre di più javascript
James Westgate,

1
Questo non funzionerà per "20pt" o "20em". parseInt ("20pt") == 20! Questo potrebbe essere tutto ciò di cui ha bisogno il poster, ma mi piacerebbe poter usare X ("20em") per esempio e recuperare la larghezza reale in pixel.
Lawrence I. Siden

2
@lsiden: funziona. parseInt("20em", 10) === 20e parseInt("20pt", 10) === 20. Sentiti libero di incollare una delle due espressioni nella console del tuo browser preferito o guarda questo breve esempio . Qualunque problema tu stia riscontrando risiede altrove nel tuo codice.
Andy E

6
Una nota a margine, la parseIntfunzione ignorerà effettivamente tutti i caratteri non interi aggiunti alla fine di una stringa di caratteri interi. parseInt('234sdfsdf') == 234
Chris W.

3
@ AndyE: Isiden stava dicendo che parseInt non convertirà i valori em (o pt o altri) nei valori pixel equivalenti, che è ciò di cui alcune persone potrebbero aver bisogno.
LeartS

30

Più in generale, parseFloatelaborerà correttamente i numeri in virgola mobile, mentre parseIntpotrebbe perdere silenziosamente cifre significative:

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


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

anche se come è correlato a jQuery, non lo so


0

Ci scusiamo per lo scavo, ma:

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); lavora per me nella console di sviluppo di Google Chrome
Thomas

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

        });
    });

Quando provo a identificare la variabile x con un valore di pixel I usando jquery, metto il + = tra virgolette. Invece di avere larghezza: '+ = x', che non funziona perché pensa che x sia una stringa piuttosto che un numero. Si spera che questo aiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.