December 27, 2000 - String-Based Physical Measurements | WebReference

December 27, 2000 - String-Based Physical Measurements

Yehuda Shiran December 27, 2000
String-Based Physical Measurements
Tips: December 2000

Yehuda Shiran, Ph.D.
Doc JavaScript

It's very important to remember that although the STYLE object's properties (such as left and top) denote physical measurements, they are strings in JavaScript. Fail to do so, and you will get into long debugging sessions. When you need the pure numeric value of either left or top, use the parseInt() method. This method parses a string from left to right, converting the string to an integer. Parsing stops when there is no way to make an integer out of the string. For example, parseInt("50px") is 50. The following code segment adds 50 pixels to the button's left property, every time the user clicks the button:

<FORM>
<INPUT ID="counter1" STYLE="position:relative; left:0px" TYPE="button" 
VALUE="Move Button" onclick="handleClick()">
</FORM>
<SCRIPT LANGUAGE="JavaScript">
<!--
var obj = document.getElementById('counter1');
var xlocation = parseInt(obj.style.left);
alert(xlocation);
function handleClick() {
  xlocation += 50;
  document.getElementById('counter1').style.left = xlocation + "px";
}
// -->
</SCRIPT>

Try it repetitively:

Notice that numeric operations (incrementing by 50) are done with the integer-typed xlocation. We set the left value by assembling xlocation and "px".