<SCRIPT>
window.onload=fnInit;
function fnInit(){
oSheet.onclick=fnEdit;
var iLen=oSheet.rows.length-1;
for(var i=1;i<iLen;i++){
var oRow=oSheet.rows[i];
var oCells=oRow.cells;
oCells(3).setExpression("innerText","fnGetValue(" + oRow.uniqueID + ")");
}
var oGrand=oSheet.rows(iLen).cells(1);
oGrand.setExpression("innerText","fnGetTotal()");
}
function fnGetTotal(){
var iValue=0;
var iLen=oSheet.rows.length-1;
for(var i=1;i<iLen;i++){
iValue+=parseFloat(oSheet.rows(i).cells(3).innerText);
}
return iValue;
}
function fnGetValue(oRow){
var oCells=oRow.cells;
var oPrice=oCells(2);
var oQuantity=oCells(1);
var sPrice;
var sQuantity;
if(oPrice.childNodes[0].nodeName=="#text"){
sPrice=oPrice.innerText;
}
else{
var vPrice=oPrice.childNodes[0].value;
sPrice=(vPrice==""?"0":vPrice);
}
if(oQuantity.childNodes[0].nodeName=="#text"){
sQuantity=oQuantity.innerText;
}
else{
var vQuantity=oQuantity.childNodes[0].value;
sQuantity=(vQuantity==""?"0":vQuantity);
}
if(sQuantity==""){
sQuantity=0;
}
function fnEdit(){
var oNode=event.srcElement;
if(oNode.getAttribute("EDIT")){
var oInput=document.createElement("INPUT");
oInput.type="text";
oInput.onblur=fnEndEdit;
oInput.onkeydown=fnTrapAlpha;
oInput.size=5;
oNode.appendChild(oInput);
oInput.value=oNode.innerText;
oNode.childNodes[0].removeNode();
oInput.focus();
oInput.select();
}
}
function fnTrapAlpha(){
var iCode=event.keyCode;
if(((iCode<48)||(iCode>57))&&((iCode!=8)&&(iCode!=190)&&(iCode!=46))){
event.returnValue=false;
}
}
function fnEndEdit(){
var oNode=event.srcElement;
var oValue=document.createTextNode(oNode.value);
oNode.parentNode.appendChild(oValue);
oNode.removeNode();
}
</SCRIPT>
</HEAD>
<!--TOOLBAR_START-->
<!--TOOLBAR_EXEMPT-->
<!--TOOLBAR_END-->
<BODY TOPMARGIN=0 LEFTMARGIN=0 BGPROPERTIES="FIXED" BGCOLOR="#FFFFFF"
LINK="#000000" VLINK="#808080" ALINK="#000000">
<BLOCKQUOTE CLASS="body">
<H1>setExpression Method Sample</H1>
<P>This sample uses the <B>setExpression</B> method to update the <B>innerText</B> properties of table rows. When the page loads, expressions are added to every table row except the first and the last. The <B>uniqueID</B> property is used to pass a reference to each row that has an expression.
</P>
<P>
You can change the prices and quantities by clicking on the blue table cells.
When you enter a new value, the expressions for the totals update immediately.
</P>
<TABLE ID="oSheet">
<TR><TH>Product</TH><TH>Quantity</TH><TH>Price per #</TH><TH>Totals</TH></TR>
<TR><TD>Browser Putty</TD><TD CLASS="edit" EDIT="true">2</TD><TD CLASS="edit" EDIT="true">4.99</TD><TD></TD></TR>
<TR><TD>Browser Spackle</TD><TD CLASS="edit" EDIT="true">1</TD><TD CLASS="edit" EDIT="true">8.99</TD><TD></TD></TR>
<TR><TD>Browser Tape</TD><TD CLASS="edit" EDIT="true">1</TD><TD CLASS="edit" EDIT="true">12.95</TD><TD></TD></TR>
<TR><TH COLSPAN=3>Grand Total</TH><TH></TH></TR>
</TABLE>