recalc Method | Internet Development Index |
Recalculates all dynamic properties in the current document.
Syntax
document.recalc( [bForceAll])
Parameters
bForceAll Optional. Boolean that specifies one of the following values:
false Default. Recalculates only those expressions that have changed since the last recalculation. true Recalculates all expressions in the document.
Return Value
No return value.
Remarks
Implicit dependencies, internal property changes, and related properties can cause some expressions not to recalculate, even though the properties being referenced might have changed. For example, resizing the main window changes the clientWidth property. Expressions that reference clientWidth might not be recalculated, because the change might not be recognized.
Implicit dependencies refer to properties that can be altered by changes in other properties. For example, the height of a div implicitly depends on the innerHTML of the div. However, if an expression references the height, a change in the innerHTML, which might alter the height, does not cause a recalculation of the expression on a subsequent call to recalc.
Related properties can access or manipulate data or behaviors through one or more other properties. For example, pixelLeft and posLeft can set or retrieve the left position of the element. However, if an expression that references pixelLeft and posLeft is altered, the expression might not be recalculated on subsequent calls to recalc.
Related properties that can cause this behavior include the following: clientHeight, clientLeft, clientTop, clientWidth, height, left, offsetHeight, offsetLeft, offsetTop, offsetWidth, pixelHeight, pixelLeft, pixelTop, pixelWidth, posHeight, posLeft, posTop, posWidth, and top.
To force recalculations of all expressions, you should refer to the same property name or manually call recalc(true).
Example
The following example uses the recalc method in HTML and script to help create a timer. If the calls to recalc are commented out, the timer does not work correctly.
<HTML> <HEAD> <TITLE>Recalc Example</TITLE> <STYLE> BUTTON {font-size:14;width:150} </STYLE> <SCRIPT> var timerID = null; var seconds = 0; // // This function is called when the page loads. // It sets up a couple of expressions. // function init() { A.style.setExpression("width","seconds*10"); B.setExpression("innerText","seconds.toString()"); } // // This function gets calls once a second and updates the seconds // variable. Notice that without recalc, the expressions aren't // updated until the mouse is moved. // function timer() { seconds++; document.recalc(); } // // starts the timer // function starttimer() { if (timerID == null) { timerID = setInterval("timer()", 1000); startButton.disabled = true; stopButton.disabled = false; } } // // stops the timer // function stoptimer() { if (timerID != null) { clearInterval(timerID); timerID = null; startButton.disabled = false; stopButton.disabled = true; } } // // resets the timer // function resettimer() { seconds = 0; } </SCRIPT> </HEAD> <BODY onload="init()"> <DIV id=A style="background-color:lightblue" ></DIV> <DIV id=B style="color:hotpink;font-weight:bold"></DIV> <BR> <BUTTON id="startButton" onclick="starttimer()">Start the Timer</BUTTON></BR> <BUTTON id="stopButton" DISABLED="true" onclick="stoptimer()">Stop the Timer</BUTTON><BR> <BUTTON id="resetButton" onclick="resettimer()">Reset the Timer</BUTTON><BR> <P style="width:320;color:peru;background-color:wheat"> This example illustrates the use of document.recalc(). If the calls to recalc are omitted in this example, expressions will not be updated until the mouse is moved. </P> </BODY> </HTML>
Standards Information
There is no public standard that applies to this method.
Applies To
document
See Also
About Dynamic Properties, getExpression, removeExpression, setExpression