麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

js綜合應用實例簡單的表格統(tǒng)計

2019-11-20 22:20:21
字體:
來源:轉載
供稿:網(wǎng)友
在做調(diào)查問卷的過程中,遇到一個表格的統(tǒng)計問題,算是需要些js方面的綜合知識,所以記錄下來。

基本需求如下:
 
核心的htm如下:
復制代碼 代碼如下:

<div class="tablebox">
<h2>
<span>(3)2010年市屬疾病預防控制中心信息化建設資金來源及分配情況</span></h2>
<div class="blockB">
<p>
說明:單位:萬元,精確到小數(shù)點后1位</p>
</div>
<ul>
<li>
<table border="0" cellspacing="0" cellpadding="0" class="templateTable" width="750px">
<tr>
<td class="tdright" colspan="2">
</td>
<td class="tdcol">
政府財政</td>
<!--<td class="tdcol">
項目經(jīng)費</td>-->
<td class="tdcol">
單位自籌</td>
<td class="tdcol">
其他資金</td>
<td class="tdcol">
合計</td>
</tr>
<tr>
<td class="tdright width20" rowspan="4">直接支出</td>
<td class="tdright">
軟件</td>
<td class="tdleft">
<input name="text_4780" type="text" id="text_4780" class="width110 digital" /></td>
<td class="tdleft">
<input name="text_4782" type="text" id="text_4782" class="width110 digital" /></td>
<td class="tdleft">
金額:<input name="text_4783" type="text" id="text_4783" class="width90 digital" />
來源:<input type="text" name="text_4784" id="text_4784" class="width90" /></td>
<td class="tdleft">
<input type="text" class="width110" id='82row1' disabled="disabled" />
</td>
</tr>
<tr>
<td class="tdright">
硬件</td>
<td class="tdleft">
<input name="text_4785" type="text" id="text_4785" class="width110 digital" /></td>
<td class="tdleft">
<input name="text_4787" type="text" id="text_4787" class="width110 digital" /></td>
<td class="tdleft">
金額:<input name="text_4788" type="text" id="text_4788" class="width90 digital" />
來源:<input type="text" name="text_4789" id="text_4789" class="width90" /></td>
<td class="tdleft">
<input type="text" id="82row2" class="width110" disabled="disabled" /></td>
</tr>
<tr>
<td class="tdright">
運行維護</td>
<td class="tdleft">
<input name="text_4790" type="text" id="text_4790" class="width110 digital" /></td>
<td class="tdleft">
<input name="text_4792" type="text" id="text_4792" class="width110 digital" /></td>
<td class="tdleft">
金額:<input name="text_4793" type="text" id="text_4793" class="width90 digital" />
來源:<input type="text" name="text_4794" id="text_4794" class="width90" /></td>
<td class="tdleft">
<input type="text" id="82row3" class="width110" disabled="disabled" /></td>
</tr>
<tr>
<td class="tdright">
其他投入</td>
<td class="tdleft">
<input name="text_4795" type="text" id="text_4795" class="width110 digital" /></td>
<td class="tdleft">
<input name="text_4797" type="text" id="text_4797" class="width110 digital" /></td>
<td class="tdleft">
金額:<input name="text_4798" type="text" id="text_4798" class="width90 digital" />
來源:<input type="text" name="text_4799" id="text_4799" class="width90" /></td>
<td class="tdleft">
<input type="text" id="82row4" class="width110" disabled="disabled" /></td>
</tr>
<tr>
<td class="tdright" colspan="2">
經(jīng)費下?lián)?lt;/td>
<td class="tdleft">
<input name="text_6362" type="text" id="text_6362" class="digital width110" /></td>
<td class="tdleft">
<input name="text_6363" type="text" id="text_6363" class="digital width110" /></td>
<td class="tdleft">
金額:<input name="text_6364" type="text" id="text_6364" class="digital width90" />
來源:<input name="text_6365" type="text" id="text_6365" class="width90" /></td>
<td class="tdleft">
<input type="text" id="82row5" class="width110" disabled="disabled" /></td>
</tr>
<tr>
<td class="tdright" colspan="2">
合計</td>
<td class="tdleft">
<input type="text" id="82col1" title1="surveyTable" disabled="disabled" /></td>
<td class="tdleft">
<input type="text" id="82col3" title1="surveyTable" disabled="disabled" /></td>
<td class="tdleft">
<input type="text" id="82col4" title1="surveyTable" disabled="disabled" /></td>
<td class="tdleft">
<input type="text" id="82sum" title1="surveyTable" disabled="disabled" /></td>
</tr>
</table>
</li>
</ul>
</div>

看到這樣的基本需求,本身并不難,基本思路就是在更新數(shù)據(jù)后,失去了焦點的同時,更新對應的合計文本框。難點在于獲取需要累加那些文本框的值。

1如果只知道合計的文本框ID如何得到需要累加的文本框編號呢?

先分析行統(tǒng)計,可以發(fā)現(xiàn),行統(tǒng)計需要的文本框和合計的文本框都在同一個tr標簽中,而且都有類digital。例如82row1需要計算的文本框text_4780,text_4782,text_4783

都在同一個tr標簽中,而且類都有digital(這樣就可以排除不需要統(tǒng)計的文本框text_4784)。

所以基本的思路就是根據(jù)這個關系去尋找需要統(tǒng)計的文本框,例如對于82row1就需要找到文本框text_4780,text_4782,text_4783。

經(jīng)過測試的基本js代碼如下:
復制代碼 代碼如下:

function GetOneRowAllChild(totalId)
{
var idList = [];
var tdList=$("#"+totalId).parent('td').parent().children("td");//取統(tǒng)計文本框的父節(jié)點td的父節(jié)點tr,然后再取tr的子節(jié)點,得到同一行的所有td
$.each(tdList, function(i, n){//循環(huán)td
var inputs=$(n).children("input[type='text']");//得到td中的文本框
if(inputs.length>0)
{
$.each(inputs, function(j, itemInput){ //循環(huán)td中的文本框
var item=$(itemInput);
if(item.hasClass("digital"))//判斷是不是需要的文本框,排除來源列的文本款
{
var id=item.attr("id");
idList.push(id);
}
});
}
});
//var NameList = idList.join(",");
//alert(NameList);
BindBlur(idList,totalId);
}
function BindBlur(idList,totalId)//綁定失去焦點的事件blur
{
$.each(idList, function(j, item){
var id=item;
$("#"+id).blur( function () { updateSum(idList,totalId) } );
});
}
function updateSum(idList,totalId)//更新統(tǒng)計值
{
var sum=0.0;
$.each(idList, function(j, item){
var id=item;
var value=$("#"+id).val();
if($.isNumeric(value))
{
sum+=parseFloat(value);
}
});
$("#"+totalId).val(sum);
}

2有了獲取每一行的的文本框的思路后,在考慮每一列的思路,和獲取每一行的思路基本相同,但在修改的過程中,發(fā)現(xiàn)還是有很多不同。

經(jīng)過測試的代碼如下
復制代碼 代碼如下:

function GetOneColumnAllChild(totalId,index)
{
var idList = [];
var trList=$("#"+totalId).parent('td').parent('tr').parent().children("tr");////取統(tǒng)計文本框的父節(jié)點td的父節(jié)點tr的父節(jié)點table,然后再取table的子節(jié)點,得到所有tr
$.each(trList, function(i, n){ //遍歷所有的tr
var tdList=$(n).children("td") //
if(tdList.length>0)
{
var inputindex=0;
$.each(tdList, function(j, item){ //遍歷所有的td
// if(j==index)// 由于<td class="tdright width20" rowspan="4">直接支出</td>,導致如果這樣取數(shù)據(jù)會出錯,因為第一行多了一個td,其他含都比第一行少了一個td
// {
var inputList=$(item).children("input[type='text']");
if(inputList.length>0) {
$.each(inputList, function(k, iteminput){ //遍歷所有的文本框
var item=$(iteminput);
if(item.hasClass("digital")){
inputindex++;
if(inputindex==index){ //支取指定列的文本框
idList.push(item.attr("id"));
}
}
});//end inputList
}// end if(inputList.length>0)
});// end tdList
} // if(tdList.length>0)
});//end trList
BindBlur(idList,totalId);
//var NameList = idList.join(",");
//alert(NameList);
}

總結:初次遇見此類問題,真的沒有什么比較好的思路。這樣雖然初步算是解決了,但靈活性很小,例如每一個單元格只能有一個需要統(tǒng)計的文本框,多個就會出錯。不過根據(jù)現(xiàn)在最簡單如果進行擴展,就會適應更復雜的情況。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 成人精品 | 国产精品久久av | 广州毛片 | 亚洲成人欧美 | 亚洲国产精品一区二区三区 | 欧美性生活视频免费 | 国内久久久久 | 在线播放一区二区三区 | 国产妇女乱码一区二区三区 | 日本高清视频网站www | 欧美三级短视频 | 91精品国产乱码久久久久久久久 | 在线小视频国产 | 精品久久一区二区 | 91aa.app| 舌头伸进添的我好爽高潮网站 | 成人午夜免费网站 | 亚洲网站一区 | 久色伊人 | 久久一级 | 日韩精品久久久 | 羞羞网站在线看 | 黄片毛片一级 | 欧美一级黄色片在线观看 | 精品国产一区二区三区久久久蜜月 | 日日狠狠久久偷偷四色综合免费 | 久久成人精品视频 | 欧美aⅴ视频 | 欧美日本日韩 | 136福利视频 | 国产免费一级淫片 | 久草热久草视频 | 国产精品视频一区二区三区四区五区 | 国产精品视频海角社区88 | 一级尻逼视频 | 久久草在线观看视频 | 12av毛片 | 精品久久久久久 | 亚洲第一成人久久网站 | 精品久久久久久久久久久久久久 | 在线成人免费网站 |