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
That is the behavior according to the standard. ECMA-262 section 15.1.2.2 states that
I’d be more worried that at some point in the future the units of
elem2.style.topwill change. In that case, this code could be turning200pxinto200em, which could cause a great deal of confusion.