3

parseInt("7em", 10); returns 7 in all browsers I tested [*]. But can I rely on this?

The reason I ask is, that I want to perform some calculations based on em, like

/* elem1.style.top uses em units */
elem2.style.top = parseInt(elem1.style.top, 10) + 1 + "em";

I could do this with regular expressions, but parseInt is easier to use, and probably a bit faster. Or is there another solution (maybe using jQuery)?

[*] Tested so far on: IE 6, IE 8, Safari 4, Firefox 3.6, Opera 10.5

5 Answers 5

6

That is the behavior according to the standard. ECMA-262 section 15.1.2.2 states that

parseInt may interpret only a leading portion of string as an integer value; it ignores any characters that cannot be interpreted as part of the notation of an integer, and no indication is given that any such characters were ignored.

I'd be more worried that at some point in the future the units of elem2.style.top will change. In that case, this code could be turning 200px into 200em, which could cause a great deal of confusion.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks, good answer (with the most specific snippet from the specification)!
1

Yes, you can rely on this. Go to http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf and search for section '15.1.2.2', parseInt

Comments

1

why not taking a save road with

parseInt(elem1.style.top.replace(/em/, ""), 10);

2 Comments

always include the radix!
You only have to get burned once doing something like parseInt('08') to never forget the radix again. This actually just changed recently in Chrome - they got rid of the gotcha, and good on em.
0

Yes. You can rely on it.

Comments

0

parseInt("7em", 10); will always return 7, yes. parseInt() returns the first value in the string.

And yes, parseInt is faster and easier to use than regular expressions.

And, should you use jQuery? Well it wont help you that much on the calculation or parsing in this matter, but sure your other code will probably be easier and better.

http://www.w3schools.com/jsref/jsref_parseInt.asp

Comments

Your Answer

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.