39

I have an element in javascript like follows:

 <span>280ms</span>

I want to extract 280 from the span element. How can I do it? The content within the span element will be any number followed by ms.

Pratik Gadoya
1,4771 gold badge17 silver badges28 bronze badges
asked Aug 11, 2011 at 21:51
1
  • Similar question, best answer Commented Jan 21, 2016 at 13:25

10 Answers 10

84

parseInt() is pretty sweet.

HTML

<span id="foo">280ms</span>

JS

var text = $('#foo').text();
var number = parseInt(text, 10);
alert(number);

parseInt() will process any string as a number and stop when it reaches a non-numeric character. In this case the m in 280ms. After have found the digits 2, 8, and 0, evaluates those digits as base 10 (that second argument) and returns the number value 280. Note this is an actual number and not a string.

Edit:
@Alex Wayne's comment.
Just filter out the non numeric characters first.

parseInt('ms120'.replace(/[^0-9\.]/g, ''), 10);
HoldOffHunger
21.3k11 gold badges123 silver badges147 bronze badges
answered Aug 11, 2011 at 21:55
Sign up to request clarification or add additional context in comments.

8 Comments

This is the best answer. Note that though the 10 parameter in parseInt is optional, you should use it to prevent accidental parsing of a number as octal. If the span contains "0700ms", that will not return 700 as a result but will be 448!
@Jacob is right. 10 is not the default if you omit it. Instead javascript tries to guess based on the string format. History has proven that making javascript try to guess anything leads to pain and suffering. So, always explicitly call out your radix.
What about parsing ms120 to get 120?
@ThomasClowes Just filter out the non numeric characters first. parseInt('ms120'.replace(/[^0-9\.]/g, ''), 10);
@AlexWayne You should include your last comment as part of answer. A simple parseInt() won't work if the string doesn't begin with number like already noted in comments.
|
19

Try this:

var num = document.getElementById('spanID').innerText.match(/\d+/)[0];

jQuery version:

var num = $('span').text().match(/\d+/)[0]; // or $('#spanID') to get to the span

If you want as numeric value (and not as string), use parseInt:

var num = parseInt($('span').text().match(/\d+/)[0], 10);
answered Aug 11, 2011 at 21:53

1 Comment

Using parseInt(), you don't need the regex matching. Kudos for providing the radix parameter, though.
12

Try the following

var strValue = // get 280m from the span
var intValue = parseInt(strValue.match(/[0-9]+/)[0], 10);
answered Aug 11, 2011 at 21:55

Comments

4

You could use the parseInt() function

var number = parseInt($("span").text())
answered Aug 11, 2011 at 21:55

1 Comment

+1 However, you should provide the radix parameter to parseInt().
0

Change the span in:

<span id='msSpan'>280ms</span>

Then you can do:

alert($('#msSpan').text());
answered Aug 11, 2011 at 21:54

Comments

0

Will it always end in "ms"? You can do:

var num = s.substring(0, s.length-2) 

where s is the string in the span. To get this value, you can use text(), html(), or innerHTML on the span.

answered Aug 11, 2011 at 21:58

Comments

0

in general for numbers no mather negative or positive

<div>
 blah blah
 <span>285blahblah</span>
</div>
var html= document.getElementsByTagName('div')[0].innerHTML;// or $('div').html() if jquery
var number = parseFloat(html.match(/-*[0-9]+/));

http://jsfiddle.net/R55mx/

answered Jun 10, 2014 at 6:39

Comments

0

var myNumber= $('span').text().replace(/[^d.,]+/,'');

answered Sep 14, 2018 at 14:52

Comments

0

This extracted number from string for me:

function extractNumberFromString(inputString){
const number=[];
for(const char of inputString){
if(!isNaN(char)){
number.push(parseInt(char));
}
}
return number;
}
const i="election2025india";
console.log(extractNumberFromString(i));
//OUTPUT :- [ 2, 0, 2, 5 ]

Zach Jensz
4,1186 gold badges19 silver badges32 bronze badges
answered Jan 18, 2025 at 15:34

Comments

-1

using jquery is pretty simple. probably better giving the span an id though

var mytext=replace($('span').text(),"ms","");

edited to remove ms

answered Aug 11, 2011 at 21:53

2 Comments

the OP wants only the number part of the .text()
This doesn't extract numbers, gives you the whole text.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.