取得、修改单元格的值
由填报表模板生成的HTML中,一个填报表相当于一个<Table>,而每一个子元素<td>,都会自动生成id属性,其属性值的命名规则是,id=”tag的name属性值_单元格号”,如id=”report1_B2”,我们要在页面中用脚本取得或者修改单元格的值,可以根据这个id很容易做到,例如,要取得B2单元格的值,用javascript在页面中可以这样取得var B2Vlalue = document.all[‘report1_B2’].value。我们以取得某列中数值最大的值为例,对取得、修改单元格的值做一个全面讲解:
首先,要在HTML展现的报表中,用户每输入一次值都要自动进行运算,计算出当前列中最大的值,所以必须先定义好自定义函数,这个自定义的javascript函数完成求出当前列的最大值,然后把最大值赋给某展现的单元格。容易想到,这个javascript应该有两个参数――当前值及参与计算的数据个数。这个自定义函数可以写在展现报表的JSP里,如下
<script language="javascript">
//求最大值的自定义函数
function getMax(obj1,obj2){
var yyy = obj2; //report1这个名字应该与tag标签的name属性值对应,B表示所求值所在的列
var rid = "report1_B";
var maxValue;
maxValue=parseFloat(document.all["report1_B3"].value);
for(var i=4;i<obj1+3;i++) {
var tempId = "report1_B"+i.toString();
var tempValue = parseFloat(document.all[tempId].value);
if(tempValue>maxValue) maxValue=tempValue; }
var did = "report1_D2";//求出最大值后在页面展现的单元格
document.all[did].value=maxValue; //提交的值
document.all[did].innerText=maxValue; //页面显示值 return "";
}
</script>
其中,参数obj1及obj2分别表示计算数据值的个数及各计算单元格的数据值,在函数中,首先假设B3单元格(计算列的第一个单元格)的值为最大值,并把其值赋予maxValue变量。 maxValue=parseFloat(document.all["report1_B3"].value); 然后用循环分别把计算列的其它单元格与最大值变量作比较,并把比较出来的最大值赋给maxValue,最后把maxValue传给document.all[did].value,用于在填报表所引用的值,同时把maxValue传给document.all[var …].innerText,用于在页面上的显示。
在本例子中,分别用maxValue = document.all[‘id号’].value取得页面上的单元格,而用document.all[“ID号”].value = maxVavlue对单元格赋值。