현재 문서의 모든 탄력적인 속성들를 다시 계산한다.

인수/파라메터
bForceAll
선택적인 요소이며, 모두 다시 계산할 것인가를 지정하는 부울값이다.
false 디폴트이며, 재계산이 전번 계산 이후 변경된 것들만을 다시 계산한다.
true 모든 표현식를 다시 계산한다.
반환값

반환값은 없다.

특기

함축된 종속물들, 내부적 속성의 변경들과 관련된 속성들은 재계산을 하지 않도록 되어 있지만, 참조되는 이들 속성들이 변경될 수 있다. 예를들어 메인 윈도우의 크기 조정이 되면, clientWidth 속성이 변경된다. 그 크기 변화가 감지되지 않을 수 있으므로, clientWidth로 참조되는 표현은 다시 계산되지 않을 수 있다.

속성들을 참조하는 함축된 종속물들은 다른 속성들이 변경되므로서 변경될 수 있다. 예를들어 divheight 속성은 함축적으로 divinnerHTML에 따라 다르다. 그러나, height를 참조하는 표현은, height을 변경시킬 수 있는, innerHTML에서 변경되면, recalc를 호출한 후에 표현식을 다시계산하지 않는다.

관련된 속성들은 데이터나 비헤이버에 한가지 이상의 다른 속성들을 통하여 접속하거나 처리할 수 있다. 예를들어, pixelLeftposLeft는 한 개체의 왼쪽 위치를 설정하거나 반환할 수있다. 그러나 posLeftposLeft 속성을 참조하는 표현이 변경되면, 그 표현은 recalc을 호출하여도 다시 계산되지 않을 수 있다.

clientHeight, clientLeft, clientTop, clientWidth, left, offsetHeight, offsetLeft, offsetTop, offsetWidth, pixelHeight, posLeft, pixelTop, pixelWidth, posHeight, posLeft, posTop, posWidthtop등의 속성들은 이와 같은 비헤이버를 갖는다.

모든 표현의 강제적인 재계산을 위하여, 속성 이름을 참조하거나 수동적으로 이나 recalc(true)를 호출한다.

적용
개체scriptIE
참조
recalc getExpression removeExpression setExpression


기능함수 timer()는 1초 간격으로 업데이트된다.
마우스를 클릭하여 재계산(document.recalc())하지 않으면, 표현식이 업데이트되지 않고 정확히 작동되지 않는다.

<HTML>
<HEAD>
<SCRIPT>
var timerID = null;
var seconds = 0;
function initialize(){
  objA.style.setExpression('width','seconds*10');
  objB.setExpression('innerText','seconds.toString()');
}
function timer(){
  seconds++;
  document.recalc();
}
function startTimer(){
  if (timerID==null){
    timerID=setInterval('timer()',1000);
    startButton.disabled=true;
    stopButton.disabled=false;
  }
}
function stopTimer(){
  if (timerID != null){
    clearInterval(timerID);
    timerID = null;
    startButton.disabled = false;
    stopButton.disabled = true;
  }
}
function resetTimer(){
  seconds = 0;
}
</SCRIPT>
</HEAD>
<BODY onload="initialize()">
<DIV id=objA style="background-color:blue" ></DIV>
<DIV id=objB style="color:pink;font-weight:bold"></DIV>
<BUTTON id="startButton" onclick="startTimer()">타이머 시작</BUTTON>
<BUTTON id="stopButton" disabled="true" onclick="stopTimer()">타이머 중지</BUTTON>
<BUTTON id="resetButton" onclick="resetTimer()">타이머 재설정</BUTTON><BR>
</BODY>
</HTML>