最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2013年09月03日 16:34:37   投稿:whsnow  
在做調查問卷的過程中,遇到一個表格的統(tǒng)計問題,一個需要用到js方面的綜合知識,感覺還不錯所以記錄下來與大家分享,感興趣的朋友可以了解下

在做調查問卷的過程中,遇到一個表格的統(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 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)在最簡單如果進行擴展,就會適應更復雜的情況。

相關文章

  • axios使用攔截器統(tǒng)一處理所有的http請求的方法

    axios使用攔截器統(tǒng)一處理所有的http請求的方法

    這篇文章主要介紹了axios使用攔截器統(tǒng)一處理所有的http請求的方法,通過一段實例代碼給大家介紹了axios攔截器使用,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • JavaScript數(shù)組和對象的復制

    JavaScript數(shù)組和對象的復制

    本篇文章主要介紹了JavaScript數(shù)組和對象的復制的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 超強推薦的js編程中的簡潔寫法收集

    超強推薦的js編程中的簡潔寫法收集

    超強推薦的js編程中的簡潔寫法收集...
    2007-08-08
  • 淺析JavaScript 函數(shù)柯里化

    淺析JavaScript 函數(shù)柯里化

    這篇文章主要介紹了JavaScript 函數(shù)柯里化的相關資料,幫助大家更好的理解和學習JavaScript,感興趣的朋友可以了解下
    2020-09-09
  • JavaScript 聲明私有變量的兩種方式

    JavaScript 聲明私有變量的兩種方式

    這篇文章主要介紹了JavaScript 聲明私有變量的兩種方式,幫助大家更好的理解和學習使用JavaScript,感興趣的朋友可以了解下
    2021-02-02
  • Javascript 實用小技巧

    Javascript 實用小技巧

    都是一些非常不錯的js 小技巧,學習js的朋友一定要看下,有很多不錯的代碼。
    2010-04-04
  • JS設置cookie、讀取cookie

    JS設置cookie、讀取cookie

    js設置cookie有很多種方法,包括JS設置cookie、讀取cookie,工作中常會用到!下面是詳細代碼,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 詳解js中的apply與call的用法

    詳解js中的apply與call的用法

    在ECAMScript3給Function的原型定義了兩個方法,它們是Function.prototype.call和Function.prototype.apply。本文詳細介紹了apply與call的用法,有需要的可以參考下。
    2016-07-07
  • 詳解如何使用JavaScript獲取自動消失的聯(lián)想詞

    詳解如何使用JavaScript獲取自動消失的聯(lián)想詞

    前幾天在做數(shù)據(jù)分析時,我嘗試獲取某網(wǎng)站上輸入搜索詞后的聯(lián)想詞,輸入搜索詞后會彈出一個顯示聯(lián)想詞的框,有趣的是,輸入框失去焦點后,聯(lián)想詞彈框就自動消失了,這種情況下該怎么辦呢,所以本文給大家介紹了如何使用JavaScript獲取自動消失的聯(lián)想詞,需要的朋友可以參考下
    2024-06-06
  • JavaScript實現(xiàn)移動端頁面按手機屏幕分辨率自動縮放的最強代碼

    JavaScript實現(xiàn)移動端頁面按手機屏幕分辨率自動縮放的最強代碼

    這篇文章主要介紹了JavaScript實現(xiàn)移動端頁面按手機屏幕分辨率自動縮放的最強代碼,通過阻止瀏覽器的默認行為各方面分析縮放的功能實現(xiàn),具體操作步驟大家可查看下文的詳細講解,感興趣的小伙伴們可以參考一下。
    2017-08-08

最新評論

东辽县| 洛隆县| 盐池县| 象山县| 华坪县| 保靖县| 上栗县| 大庆市| 丰城市| 甘孜| 黑河市| 新密市| 资阳市| 德江县| 古蔺县| 彩票| 城步| 金坛市| 根河市| 乌鲁木齐市| 定结县| 邢台县| 灵石县| 武邑县| 射阳县| 澄迈县| 岑溪市| 德阳市| 班玛县| 丹阳市| 汉川市| 工布江达县| 乌拉特后旗| 都江堰市| 丰原市| 万宁市| 清苑县| 横山县| 云南省| 德令哈市| 长沙县|