javaScript高手们,帮我看看这段程序用树或者其他的方法怎么优化!
function checkDhDs()//检查单个订户单本书的订数是否小于0
{
rowCount = tableFsmx.rows.length;
if(rowCount < 2)//没有数据
return false;
var recCount = document.frmAddFsmx.hdfRecCount.value; //数据记录数
var strArrZddm = new Array(recCount);
var strArrDhdm = new Array(recCount);
var strArrDhmc = new Array(recCount);
var strArrDs = new Array(recCount);
var strArrMzddm = new Array(recCount);
var checkValue; //当前复选框的值
var currIndex =0;
var dhAndZddm=""; //保存单个订户单本书的订数小于0的
var currZddm,currMzddm,currDhdm;
var clFlag ="";//是否处理过的标志
var checkedCount =0;//选中记录数
if(recCount >1)
{
for(i=0;i<recCount;i++)
{
if(document.frmAddFsmx.checkMark[i].checked == true) //选中的数据行
{
checkValue=document.frmAddFsmx.checkMark[i].value;
strArrZddm[currIndex]=document.frmAddFsmx.hdfZddm[checkValue].value;
strArrMzddm[currIndex]=document.frmAddFsmx.hdfMzddm[checkValue].value;
strArrDhdm[currIndex]=document.frmAddFsmx.hdfDhdm[checkValue].value;
strArrDhmc[currIndex]=document.frmAddFsmx.hdfDh[checkValue].value;
strArrDs[currIndex]=document.frmAddFsmx.hdfYfss[checkValue].value;
currIndex++;
checkedCount++;
}
}
var strClDhdm = new Array(currIndex);//保存已经处理过的订户
var strClMzddm = new Array(currIndex);//保存已经处理过的征订代码
var strClZddm = new Array(currIndex);
var clArrIndex =0;//数组的下标
var dsSum;
for(i=0;i<currIndex;i++)
{
currZddm= strArrZddm[i];
currMzddm =strArrMzddm[i];
currDhdm = strArrDhdm[i];
clFlag ="0";
dsSum =parseInt(strArrDs[i]);
for(j=clArrIndex-1;j>=0;j--)
{
if(currZddm==strClZddm[j] && currMzddm == strClMzddm[j] && currDhdm== strClDhdm[j])
clFlag ="1";//表示该订户、该书处理过
}
if(clFlag =="1")
continue;
else //未处理
{
strClZddm[clArrIndex] = currZddm;
strClMzddm[clArrIndex] = currMzddm;
strClDhdm[clArrIndex] = currDhdm;
clArrIndex++;
for(j=i+1;j<currIndex;j++)
{
if(currZddm==strArrZddm[j] && currMzddm == strArrMzddm[j] && currDhdm== strArrDhdm[j])
dsSum += parseInt(strArrDs[j]);
if(currMzddm != strArrMzddm[j]) //到了下一本书
break;
}
if(parseInt(dsSum) <0)
dhAndZddm += strArrDhmc[i]+currZddm+"、";
}
}
}
else
{
if(document.frmAddFsmx.checkMark.checked == true) //选中的数据行
{
if(parseInt(document.frmAddFsmx.hdfYfss.value)<0)
dhAndZddm=document.frmAddFsmx.hdfDh.value+document.frmAddFsmx.hdfZddm.value;
checkedCount++;
}
}
if(checkedCount ==0)
return false;
if(dhAndZddm != "")
{
alert("以下订户征订代码的总订数小于零不能分书:\n"+dhAndZddm);
return false;
}
else
return true;
}
记录稍多了,实在不能运行了,速度慢的要死.先谢谢各位了.本人对树不太熟悉,希望高手不吝赐教!