以下是自动计算的方法
function change(e) {
e=e||event;
var tag=e.target||e.srcElement;
//用正则取出最后的数字编号,注意生成新行时的命名区别是按最后的数字来区别
var str;
if(tag.name)
str=tag.name;
else
{
alert("名称丢失!");
return;
}
var reg=/[a-z]*(\d+)/i
var m=str.match(reg);
if(m==null)
{
alert("数字编号丢失!");
return;
}
var NowIndex=m[1];
var txt_hwmc, txt_jianshu,txt_danjia,txt_qsj,txt_maoli,txt_cyf,txt_zyf,txt_bxe,txt_huikou,txt_ztj,txt_zzl;
txt_hwmc = getValue(document.input1["hwmc"+NowIndex]);
txt_jianshu = getValue(document.input1["jianshu"+NowIndex]);
txt_ztj = getValue(document.input1["ztj"+NowIndex]);
txt_zzl = getValue(document.input1["zzl"+NowIndex]);
txt_danjia = getValue(document.input1["danjia"+NowIndex]);
txt_cyf = getValue(document.input1["cyf"+NowIndex]);
txt_bxe = getValue(document.input1["bxe"+NowIndex]);
txt_huikou = getValue(document.input1["huikou"+NowIndex]);
if((txt_jianshu!=0)&&(txt_ztj!=0))
{
txt_cyf=Math.round(txt_danjia * txt_ztj);
txt_maoli=Math.round((txt_danjia-txt_qsj)*txt_ztj);
}
else if((txt_jianshu!=0)&&(txt_zzl!=0))
{
txt_cyf=Math.round(txt_danjia * txt_zzl);
txt_maoli=Math.round((txt_danjia-txt_qsj)*txt_zzl);
}
else
{
txt_cyf=Math.round(txt_danjia * txt_jianshu);
txt_maoli=Math.round(txt_danjia-txt_qsj);
}
bxfbl=500; txt_zyf = txt_cyf + (txt_bxe*1)/bxfbl + (txt_huikou * 1);
document.input1["ztj"+NowIndex].value = Math.round(Math.floor(( txt_ztj *10000)/10))/1000;
document.input1["zzl"+NowIndex].value = Math.round(Math.floor(( txt_zzl *10000)/10))/1000;
document.input1["cyf"+NowIndex].value = Math.round(Math.floor(( txt_cyf *10000)/10))/1000;
document.input1["zyf"+NowIndex].value = Math.round(Math.floor(( txt_zyf *10000)/10))/1000;
getTotal();
}
如
for(var i=0;i<table.rows.length;i++)
{
var xObj=tableObj.rows[i].cell[0].all[0];//获得文本框对象
}
这样做是绝对不会存在问题的,关键是看你获得的对象是不是存在问题
var nTR = tabObj.insertRow(tabObj.rows.length-targPos);
var TRs = tabObj.getElementsByTagName('TR');
var sorTR = TRs[sorPos];
var TDs = sorTR.getElementsByTagName('TD');
if(colNum==0 || colNum==undefined || colNum==isNaN){
colNum=tabObj.rows[0].cells.length;
}
var ntd = new Array();
if(Index >2) //超出票据行数
{
alert("超出你票据的行数,不允许再增加!");
return ;
}
for(var i=0; i < colNum; i++){
ntd[i] = nTR.insertCell();
ntd[i].id = TDs[0].id;
var reg=/name=([a-z]+)(\d+)/i
ntd[i].innerHTML = TDs[i].innerHTML.replace(reg,"name=\"$1"+Index+"\"");
}
Index++;
} function deleteRow(tabObj,targPos,btnObj){
if(Index<=1) //不能全部删除
{
alert("至少要有1件货物!");
return ;
}
for(var i =0; i <tabObj.rows.length;i++){
if(tabObj.getElementsByTagName('img')[i]==btnObj){
tabObj.deleteRow(i+targPos);
}
}
Index--;
getTotal();//重新计算总的费用
}
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<div style="height:230px;width:99.9%;overflow:auto;"><table nowrap id="CommidityGrid" border="0" cellspacing="1" cellpadding="0" BGCOLOR="#949293" width="100%">
<Div>
<Script Language="javascript">
// 删除一行
function DeleteRow(currow) {
document.all["CommidityTypeID" + currow].value = "";
CommidityGrid.deleteRow(CommidityGrid.rows("GridRow" + currow).rowIndex);
}
function zhjs(coun){//货品折合计算
var ss="";
var mm="";
var aa=document.all["PyOrdCount"+coun].value;
var bb=document.all["PyOrdNum"+coun].value;
var cc=document.all["PyOrdDw"+coun].value;
var aa1=Math.round(aa/1);
for(var i=0;i<GNum.length;i++){
if(bb==GNum[i]){
for(var jj=0;jj<UCount[i].length;jj++){
if(cc==UName[i][jj]){
aa1=aa1*UCount[i][jj]
//alert(aa1)
}
}
for(var j=0;j<UCount[i].length;j++)
if(aa1>=UCount[i][j]&&UZhbz[i][j]==0){
//alert(aa1);
mm=Math.round(UCount[i][j]/1);
ss+=parseInt(aa1/mm)+UName[i][j];
aa1=aa1%mm;
}
}
}
//alert(ss);
document.all["PyOrdZh" + coun].value =ss;
}
function GridSelectTree(row)
{
var temp=0;
var fruit="";
for(var i=0; i<Form1.rownum.value;i++)
{
if (document.all("PyOrdNum" + i)!=null)
if (document.all("PyOrdNum" + i).value!="")
{
temp++;
if(temp==1)
{
fruit= document.all("PyOrdNum" + i).value;}
else
{
fruit= fruit+","+document.all("PyOrdNum" + i).value;
}
}
}
window.open('../SysSelect/SelectGoodsTwo.jsp?PageNo=1'+'&nInputGridCurRow='+row+'&fruit='+fruit+'&RowNum='+RowNum,'','resizeable=no,menubar=no,scrollbars=yes,width=700,height=500,left=190+'+(screen.availWidth-700)/2+' ,top='+(screen.availHeight-500)/2) ;
}
function getIndex()
{
intRowIndex = event.srcElement.parentElement.rowIndex;
pos.innerText = intRowIndex;
}
var RowNum="<%=BB.length+1%>";
function insertRow2()
{ var objRow = CommidityGrid.insertRow();
RowNum++;
var i=RowNum;
Form1.rownum.value=i;
objRow.id="GridRow"+i;
var aaaa1="1";
var aaaa2='1';
var objCel1 = objRow.insertCell(0);
objCel1.innerHTML='<input type="text" style="width:100%" name="PyOrdNum'+(i)+'" class="ClientTableflateditbox" onclick="GridSelectTree('+(i)+')" >';
var objCel2= objRow.insertCell(1);
objCel2.innerHTML='<input type="text" style="width:100%" name="PyOrdName'+(i)+'" class="ClientTableflateditbox" onclick="GridSelectTree('+(i)+')">';
var objCel3= objRow.insertCell(2);
objCel3.innerHTML='<input type="text" style="width:100%" name="PyOrdAd'+(i)+'" class="ClientTableflateditbox" onclick="GridSelectTree('+(i)+')" >';
var objCel4 = objRow.insertCell(3);
objCel4.innerHTML='<input type="text" style="width:100%" name="PyOrdGg'+(i)+'" class="ClientTableflateditbox" onclick="GridSelectTree('+(i)+')" >';
var objCel5= objRow.insertCell(4);
objCel5.innerHTML='<select size="1" name="PyOrdDw'+(i)+'" style="width:80px;font-size:12px" onchange="javascript:zhjs('+(i)+')"><option value="" > </option></select>';
objCel5.align="center";
var objCel6= objRow.insertCell(5);
objCel6.innerHTML='<input type="text" style="width:100%" name="PyOrdPrice'+(i)+'" class="ClientTableflateditbox" onKeyPress="return(currencyFormat(this,'+aaaa1+','+aaaa2+',event));">';
var objCel7 = objRow.insertCell(6);
objCel7.innerHTML='<input type="text" style="width:100%" name="PyOrdCount'+(i)+'" class="ClientTableflateditbox" onchange="javascript:zhjs('+(i)+')" >';
var objCel8= objRow.insertCell(7);
objCel8.innerHTML='<input type="text" style="width:100%" name="PyOrdSPrice'+(i)+'" class="ClientTableflateditbox" readonly="">';
var objCel9= objRow.insertCell(8);
objCel9.innerHTML='<input type="text" style="width:100%" name="PyOrdZh'+(i)+'" class="ClientTableflateditbox" readonly="">';
var objCel10= objRow.insertCell(9);
objCel10.innerHTML='<img src="../images/ndelete.gif" width="16" height="16" onclick="DeleteRow('+(i)+')" style="cursor:hand" title = "">';
objCel10.align="center";
var objCel11= objRow.insertCell(10);
objCel11.innerHTML='<input type="hidden" name="CommidityTypeID'+(i)+'" value="">';
///objRow.attachEvent("onclick",getIndex);
objCel1.style.background="white"
objCel2.style.background="white"
objCel3.style.background="white"
objCel4.style.background="white"
objCel5.style.background="white"
objCel6.style.background="white"
objCel7.style.background="white"
objCel8.style.background="white"
objCel9.style.background="white"
objCel10.style.background="white"
objCel11.style.background="white"// objCel2.attachEvent("onclick",GridSelectTree(++i));
} </Script>
</Div>
<tr class="ListTableHeader1" align="center" height="20px" bgcolor="#FFFFFF">
<td width="10%">货品编号</td>
<td width="15%">货品名称</td>
<td width="15%">产地</td>
<td width="10%">货品规格</td>
<td width="9%">单位</td>
<td width="10%">单价</td>
<td width="8%">数量</td>
<td width="10%">总价</td>
<td width="10%">折合包装</td>
<td width="3%"> </td>
<td style="display:none"></td>
</tr>
<%//循环输出货品浏览信息
int n=1;
while(n<BB.length+1){ %>
<tr bgColor="#FFFFFF" ID="GridRow<%=n %>">
<td><input type="text" style="width:100%" name="PyOrdNum<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onkeydown=" " onBlur="this.style.background='#FFFFFF';" onclick="GridSelectTree('<%=n%>')" value="<%=BB[n-1][1]%>"></td>
<td><input type="text" style="width:100%" name="PyOrdName<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onkeydown=" " onBlur="this.style.background='#FFFFFF';" onclick="GridSelectTree('<%=n%>')" value="<%=BB[n-1][2]%>"></td>
<td><input type="text" style="width:100%" name="PyOrdAd<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onBlur="this.style.background='#FFFFFF';" onclick="GridSelectTree('<%=n%>')" value="<%=BB[n-1][3]%>"></td>
<td><input type="text" style="width:100%" name="PyOrdGg<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onBlur="this.style.background='#FFFFFF';" onclick="GridSelectTree('<%=n%>')" value="<%=BB[n-1][4]%>"></td>
<td align="center"><select size="1" name="PyOrdDw<%=n%>" style="width:80px;font-size:12px" onchange="javascript:zhjs('<%=n%>')">
<option value="<%=BB[n-1][5]%>" ><%=BB[n-1][5]%> </option>
</select>
</td>
<td><input type="text" style="width:100%" name="PyOrdPrice<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onBlur="this.style.background='#FFFFFF';" value="<%=BB[n-1][7]%>" onKeyPress="return(currencyFormat(this,',','.',event));"></td>
<td><input type="text" style="width:100%" name="PyOrdCount<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onBlur="this.style.background='#FFFFFF';" value="<%=BB[n-1][8]%>" onchange="javascript:zhjs('<%=n%>')"></td>
<td><input type="text" style="width:100%" name="PyOrdSPrice<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onBlur="this.style.background='#FFFFFF';" value="<%=BB[n-1][10]%>" readonly=""></td>
<td><input type="text" style="width:100%" name="PyOrdZh<%=n%>" class="ClientTableflateditbox" onFocus="this.style.background='#90EE90'" onBlur="this.style.background='#FFFFFF';" value="<%=BB[n-1][11]%>" readonly=""></td>
<td align="center"><img src="../images/ndelete.gif" width="16" height="16" style="cursor:hand" onmouseover="this.src='../images/hdelete.gif'" onmouseout="this.src='../images/ndelete.gif'" onclick="DeleteRow('<%=n%>')" ></td>
<td style="display:none"><input type="hidden" name="CommidityTypeID<%=n%>"></td>
</tr>
<%n++;}%>
</table>
<br>
<table>
<tr>
<td><input type="button" onclick="insertRow2()" value="添加行" class="ButtonQuery">
<input type="hidden" name="rownum" value="<%=BB.length%>">
</td>
</tr>
</table>
</div>
给你参考,类似。
{
txt_jianshu = document.getElementById("jianshu"+i).value;
txt_ztj = document.getElementById("ztj"+i).value;
txt_zzl = document.getElementById("zzl"+i).value;
if((txt_jianshu!=0)&&(txt_ztj!=0))
{
txt_cyf=Math.round(txt_danjia * txt_ztj);
txt_maoli=Math.round((txt_danjia-txt_qsj)*txt_ztj);
}
else if((txt_jianshu!=0)&&(txt_zzl!=0))
{
txt_cyf=Math.round(txt_danjia * txt_zzl);
txt_maoli=Math.round((txt_danjia-txt_qsj)*txt_zzl);
}
else
{
txt_cyf=Math.round(txt_danjia * txt_jianshu);
txt_maoli=Math.round(txt_danjia-txt_qsj);
}
document.getElementById("cyf"+i).value=Math.round(Math.floor((txt_cyf *10000)/10))/1000;
}
在这里我加了循环 也是不行啊,怎么老是只能获取第一行的值呢?
<div id="divContent">
<div>
<table cellspacing="0" border="0" class="SSWTable">
<tr style='background-color: #F4F9FF; font-weight: bold;'>
<td style="width: 10%">
序号
</td>
<td style="width: 10%">
物资编码
</td>
<td style="width: 15%">
物资说明
</td>
<td style="width: 10%">
单位
</td>
<td style="width: 10%">
申请量
</td>
<td style="width: 10%">
已入库
</td>
<td style="width: 10%">
单价
</td>
<td style="width: 10%">
总价
</td>
<td style="width: 15%">
备注
</td>
</tr>
<tr>
<td>
<input id="btnAddContent0" type="button" value="增加" class="btn_Mgt_Style" onclick="addContent()" />
</td>
<td>
<input id="txtMCode0" type="text" name="txtMCode" readonly="readonly" onclick="selectMateril(this);"
style="width: 100%" />
</td>
<td>
<input id="txtMName0" type="text" name="txtMName" readonly="readonly" style="width: 100%" />
</td>
<td>
<input id="txtUnit0" type="text" name="txtUnit" readonly="readonly" style="width: 100%" />
</td>
<td>
<input id="txtAppNum0" type="text" name="txtAppNum" onblur="handleCharacter(this)"
style="width: 100%" />
</td>
<td>
<input id="txtNum0" type="text" name="txtNum" onblur="handleCharacter(this)"
style="width: 100%" />
</td>
<td>
<input id="txtPrice0" type="text" name="txtPrice" onblur="handleCharacter(this)"
style="width: 100%" />
</td>
<td>
<input id="txtTotal0" type="text" name="txtTotal" style="border-width: 0px; width: 100%;
text-align: center;" readonly="readonly" value="自动" />
</td>
<td>
<input id="txtMsg0" type="text" name="txtMsg" onblur="handleCharacter(this)"
style="width: 100%" />
</td>
</tr>
</table>
</div>
</div>
function handleCharacter(input) {
input.value = input.value.replace(/,/g, ',');
if ("txtNum" == input.name || "txtAppNum" == input.name) {
if (isNaN(input.value)) {
alert('数量只能输入数字!');
input.focus();
return;
}
}
if ("txtPrice" == input.name) {
if (isNaN(input.value)) {
alert('单价只能输入数值!');
input.focus();
return;
}
}
if ("txtNum" == input.name || "txtPrice" == input.name) {
var num = 0;
var price = 0;
var div = input.parentElement.parentElement.parentElement.parentElement.parentElement;
var inputs = div.getElementsByTagName("INPUT");
var inputTotal;
for (var i = inputs.length - 1; i >= 0; i--) {
var inputname = inputs[i].name;
if (inputname == "txtNum") {
num = parseInt(inputs[i].value);
}
else if (inputname == "txtPrice") {
price = parseFloat(inputs[i].value);
}
else if (inputname == "txtTotal") {
inputTotal = inputs[i];
}
}
inputTotal.value = price * num;
}
}
function selectMateril(input) {
var url = "../../RepositoryMgt/MaterielInfo/MaterielInfoDialog.aspx?t=false&rand=" + parseInt(Math.random() * 1000);
var resultStr = ShowDialog(url, '800px', '500px', 'no');
var div = input.parentElement.parentElement.parentElement.parentElement.parentElement;
if (undefined != resultStr) {
if (resultStr.length > 0) {
var datalist = resultStr.split("@@@@@");
var inputs = div.getElementsByTagName("INPUT");
for (var i = inputs.length - 1; i >= 0; i--) {
var inputname = inputs[i].name;
if (inputname == "txtMCode") {
inputs[i].value = datalist[1];
}
else if (inputname == "txtMName") {
inputs[i].value = datalist[2];
}
else if (inputname == "txtUnit") {
inputs[i].value = datalist[8];
}
}
}
}
} function addContent() {
var parentDiv = document.getElementById('divContent');
var childDiv = document.createElement("div");
//var i = parentDiv.children.length;
var j = parseInt(100 * Math.random());
childDiv.id = "div" + j;
var strhtml = "<table class='SSWTable'><tr>" +
"<td style='width: 10%'><input id='btnDelContent" + j + "' type='button' value='删除' class='btn_Mgt_Style' onclick='deleteContent(this)' /></td>" +
"<td style='width: 10%'><input id='txtMCode'" + j + "' type='text' name='txtMCode' readonly='readonly' onclick='selectMateril(this)' style='width:100%'/></td>" +
"<td style='width: 15%'><input id='txtMName" + j + "' type='text' name='txtMName' readonly='readonly' style='width:100%'/></td>" +
"<td style='width: 10%'><input id='txtUnit" + j + "' type='text' name='txtUnit' readonly='readonly' style='width:100%'/></td>" +
"<td style='width: 10%'><input id='txtAppNum" + j + "' type='text' name='txtAppNum' onblur='handleCharacter(this)' style='width:100%'/></td>" +
"<td style='width: 10%'><input id='txtNum" + j + "' type='text' name='txtNum' onblur='handleCharacter(this)' style='width:100%'/></td>" +
"<td style='width: 10%'><input id='txtPrice" + j + "' type='text' name='txtPrice' onblur='handleCharacter(this)' style='width:100%'/></td>" +
"<td style='width: 10%'><input id='txtTotal" + j + "' type='text' name='txtTotal' style='border-width: 0px; width:100%; text-align:center;' readonly='readonly' value='自动' /></td>" +
"<td style='width: 15%'><input id='txtMsg" + j + "' type='text' name='txtMsg' onblur='handleCharacter(this)' style='width:100%'/></td>" +
"</tr></table>";
childDiv.innerHTML = strhtml;
parentDiv.appendChild(childDiv);
}
function deleteContent(input) {
var div = input.parentElement.parentElement.parentElement.parentElement.parentElement;
div.parentNode.removeChild(div);
}
</script>
var nTR = tabObj.insertRow(tabObj.rows.length-targPos);
var TRs = tabObj.getElementsByTagName('TR');
var sorTR = TRs[sorPos];
var TDs = sorTR.getElementsByTagName('TD');
if(colNum==0 || colNum==undefined || colNum==isNaN){
colNum=tabObj.rows[0].cells.length;
}
var ntd = new Array();
if(Index >2) //超出票据行数
{
alert("超出你票据的行数,不允许再增加!");
return ;
}
for(var i=0; i < colNum; i++){
ntd[i] = nTR.insertCell();
ntd[i].id = TDs[0].id;
var reg=/name=([a-z]+)(\d+)/i
ntd[i].innerHTML = TDs[i].innerHTML.replace(reg,"name=\"$1"+Index+"\"");
}
Index++;} function deleteRow(tabObj,targPos,btnObj){
if(Index<=1) //不能全部删除
{
alert("至少要有1件货物!");
return ;
}
for(var i =0; i <tabObj.rows.length;i++){
if(tabObj.getElementsByTagName('img')[i]==btnObj){
tabObj.deleteRow(i+targPos);
}
}
Index--;
getTotal();//重新计算总的费用
}
/////////////////////////////////////////
<td><div align="center">
<input id="jianshu0" name="jianshu0" type="text" onKeyDown="HandlerKeyDown(event)" value="1" size="8" onBlur="sndReq3(this.value);sndReq(this.value);change();">
</div></td>
<td><div align="center">
<input type="text" id="ztj0" name="ztj0" onKeyDown="HandlerKeyDown(event)" value="0" size="8" onBlur="sndReq3(this.value);sndReq(this.value);change();">
</div></td>
<td><div align="center">
<input type="text" id="zzl0" name="zzl0" onKeyDown="HandlerKeyDown(event)" value="0" size="8" onBlur="sndReq3(this.value);sndReq(this.value);change();">
</div></td>
<td><div align="center">
<input type="text" id="danjia0" name="danjia0" onKeyDown="HandlerKeyDown(event)" value="0" size="8" ></div></td>
<input type="hidden" name="qsj0" onKeyDown="HandlerKeyDown(event)" value="0" size="8" ><input type="hidden" name="maoli0" onKeyDown="HandlerKeyDown(event)" value="0" size="8" >
<td><div align="center">
<input type="text" id="cyf0" name="cyf0" onKeyDown="HandlerKeyDown(event)" value="0" size="8" onBlur="sndReq3(this.value);sndReq(this.value);change();">
</div></td>