table数据

<div id="tableDiv" style="overflow-x: scroll">
<table class="table table-hover static-table my-table">
<thead>
<tr>
<th>行业</th> <th>9月10日</th> <th>9月11日</th> <th>9月12日</th> <th>9月13日</th> <th>9月14日</th> <th>9月15日</th> <th>9月16日</th> <th>9月17日</th> <th>9月18日</th> <th>9月19日</th> <th>9月20日</th> <th>9月21日</th> <th>9月22日</th> <th>9月23日</th> <th>9月24日</th> </tr>
</thead>
<tbody>
<tr>
<td>服装</td> <td>2.15</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td><input serviceitemid="5000000000012" day="Mon Sep 18 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Tue Sep 19 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Wed Sep 20 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Thu Sep 21 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Fri Sep 22 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Sat Sep 23 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Sun Sep 24 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> </tr>
<tr>
<td>服装</td> <td>2.15</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td>1.0</td> <td><input serviceitemid="5000000000012" day="Mon Sep 18 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Tue Sep 19 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Wed Sep 20 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Thu Sep 21 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Fri Sep 22 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Sat Sep 23 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> <td><input serviceitemid="5000000000012" day="Sun Sep 24 00:00:00 CST 2017" type="text" size="2" value="1.0"></td> </tr> </tbody>
</table>
</div>

方式一:

直接遍历table提取数据:

 function getTableData(){
var tableData = [];
//要求给table的class属性添加'my-table'
var tableTrArr = $('.my-table').find('tbody').find('tr');
for ( var i = 0; i < tableTrArr.size(); i++ ) { // tr
tableData[i] = [];
var tableTdArr = $('.my-table').find('tbody').find('tr').eq(i).find('td');
for ( var j = 0; j < tableTdArr.size(); j++ ) { //td
if (tableTdArr.eq(j).find('input').size()) {
tableData[i].push(tableTdArr.eq(j).find('input').val());
} else {
tableData[i].push(tableTdArr.eq(j).html());
}
}
} //tableData为二维数组,包含table中的所有数据 }

方式二:

页面上有个table,table里面的数据要通过RPC获取到的json格式的数据来渲染,table中有的td没有数据,没有数据的td中放input输入框,并带入默认数据

意味着td中的数据有可能有改动

提交保存时,提交到后台的数据已RPC相同的格式提交

var tableData;//全局变量

查询数据:

 var function queryData() {
$.ajax({
url: "/data/getRatio.json",
dataType: "json",
type: "POST",
data: {
"opCode":xxxxxxx,
"dateRange":2017-09-10/2017-09-25
},
success: function (result) {
if (result.hasError == true) {
alert("操作失败");
return;
}
if (!result.content || result.content.isSuccess == false) {
alert("操作失败");
} else {
showData(result.content.data); }
}
});
};

显示方法:

 function showData(data){
tableData = data;
var $table = $('<table></table>');
var $tbody = $('<tbody></tbody>');
$table.append($tbody);
for (var trdata in tableData ) {
var $tr = $('<tr></tr>');
$tbody.append($tr);
// tr
for (var j = 0; j < trdata.length; i++) {
// td
var $td = $('<td></td>');
$tr.append($td);
if(trdata[j]){//trdata[j]有值把值填入td
$td.html(trdata[j]);
}else{//trdata[j]没有值,生成input输入框填入td
var $input = $('<input type="text">');
$td.append($input);
$input.val(trdata[j]);
//给输入框添加事件监听,input的改动会作用到tableData对象
$td.find('input').on('change', function() {
trdata[j] = $(this).val();
})
}
}
}
$('#tablediv').append($table);
}

页面提交后,要把table中改动过的数据提交到后台保存

按照以上的方式渲染数据并填加input的事件监听,input里面改动的数据会通过引用自动生效到tabelData,提交保存的时候,直接拿tableData提交到后台就可以了

tableData的格式会和RPC :/data/getRatio.json返回的数据格式一致

javascript中的数据渲染与提取的更多相关文章

  1. JavaScript中的数据类型转换

    本文中提到的“原始值”指的是undefined,null,Boolean,string和number. 本文中的对象是native对象,宿主对象(浏览器定义的对象)按照各自的算法转换. JavaScr ...

  2. javascript中 json数据的解析与序列化

    首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...

  3. javascript中对数据文本格式化的思考

    在实际应用场景中,我们常常需将一些数据输出成更加符合人类习惯阅读的格式. 保留小数点后面两位 在一些要求精度没有那么准确的场景下,我们可以直接通过Number.prototype.toFixed()来 ...

  4. 浅谈 JavaScript 中常用数据及其类型转换

    在 JavaScript 中有一些 value 会经常碰到: [] (空数组).{} (空对象).'' (空字符串).undefined.null.0.NaN.Infinite 也会经常碰到数据类型转 ...

  5. 关于Javascript中通过实例对象修改原型对象属性值的问题

    Javascript中的数据值有两大类:基本类型的数据值和引用类型的数据值. 基本类型的数据值有5种:null.undefined.number.boolean和string. 引用类型的数据值往大的 ...

  6. 【译】Javascript中的数据类型

    这篇文章通过四种方式获取Javascript中的数据类型:通过隐藏的内置[[Class]]属性:通过typeof运算符:通过instanceof运算符:通过函数Array.isArray().我们也会 ...

  7. javascript中的数据结构

    Javascript中的关键字   abstract     continue      finally      instanceof      private       this boolean ...

  8. 2:JavaScript中的基本运算

    今天说的是JavaScript中的数据基本运算 在上一节中已经说了关于JavaScript中的基本数据类型 那么数据有了 剩下来就是数据之间的运算 表达式-------预算符(赋值 比较 算数 逻辑 ...

  9. Javascript模板及其中的数据逻辑分离思想(MVC)

    #Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...

随机推荐

  1. mysql 查询锁表,解锁

    //1.查看当前数据库锁表的情况   SELECT * FROM information_schema.INNODB_TRX;   //2.杀掉查询结果中锁表的trx_mysql_thread_id ...

  2. ubuntu下如何使得普通用户能够启动wireshark?

    一. 将dumpcap的用户组更改为wireshark sudo chgrp wireshark /usr/bin/dumpcap 二. 设置其他用户也具有与root一样的权限来执行dumpcap s ...

  3. 求平面上N点最远两点和最近两点距离

    最近两点,二分法 最远两点,凸包+找对踵点

  4. LC 683. K Empty Slots 【lock,hard】

    There is a garden with N slots. In each slot, there is a flower. The N flowers will bloom one by one ...

  5. JAVA记事本的图形用户界面应用程序含过滤

    JAVA记事本的图形用户界面应用程序 过滤 题目简介: 整体分析: 实验代码: package note; import java.awt.EventQueue; import java.awt.ev ...

  6. Rxjava2实战--第四章 Rxjava的线程操作

    Rxjava2实战--第四章 Rxjava的线程操作 1 调度器(Scheduler)种类 1.1 RxJava线程介绍 默认情况下, 1.2 Scheduler Sheduler 作用 single ...

  7. mingw32-gcc-9.2.1-i686-posix-sjlj-20190904-8ba5c53

    gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=d:/msys/mingw32/bin/../libexec/gcc/ ...

  8. Opencv实现的陷波滤波器

    在本示例中,共设计了三个函数,分别是巴特沃斯滤波器BLPF().巴特沃斯陷波滤波器notchFilter_BTW().高斯陷波滤波器notchFilter_GAUSS() 巴特沃斯陷波滤波器参见书上6 ...

  9. 转-Uptime与数据中心等级认证

    1 数据中心等级认证 随着数据中心的蓬勃发展,越来越多的标准被制定出具.其中,Uptime Tier认证在业内是认同度最高的标准.以前,Uptime在中国的宣传很少,很多人对Uptime及其认证体系不 ...

  10. 解决Wamp的 Error D:\wamp or PHP path 错误

    之前早早就用了wamp,发现还是挺好用的,就是刚开始改端口号之类的配置有点麻烦,不过还是一一解决了. 就在昨天安装了 composer . 突然发现wamp 有一个错 “Error D:\wamp o ...