/***
* name:加载表格或表单数据[通用]
* name:load-table-or-form-data-common.js
*
* author:zengtai
* date:2017-07-19 1501
* notice:原生javascript;兼容所有浏览器版本
*/ /* *
* 加载指定行的表格数据
* @param tableId:表格ID (指定数据类型:string)
* @param lineNumber:所在的表格行号 (指定数据类型:number)
* @return lineData:返回该行数据的数组
* @notice lineData仅包含tbody部分的内容
* @notice lineData将不包含td 的title属性为"useless-data"的文本数据
*/
function getTableLineData(tableId, lineNumber) {
//判断参数
if (arguments.length != 2) {
throw new Error("Arguments' length is not qualified!");
}
if (typeof(tableId) != 'string' || typeof(lineNumber) != 'number') {
throw new Error("Arguments is not qualified!");
} var lineData = []; //行数据 //加载行数据到lineData中
var table = document.getElementById(tableId);
var lines = table.getElementsByTagName('tr');
var line; //选中行
var tds; //选中行的单元格集合 /***
* 去除thead的影响,在getElementsByTagName('tr') 方法中;
* thead将可以作为tr被索引到,但不一定所有的表格中均会使用thead
*/
var line = lines[lineNumber - 1]; //默认第lineNumber行是选中行
if (table.getElementsByTagName('thead')) { //排除 存在 thead标签的对dom操作的影响
line = lines[lineNumber];
} var tds = line.getElementsByTagName('td'); //支持
for (var i = 0; i < tds.length; i++) {
if (tds[i].getAttribute('title') != 'useless-data') {
lineData.push(tds[i].innerText.trim());
}
} return lineData;
} /**
* 加载数据到表单元素中
* @param formId:表单ID;[不一定是Form元素,但一定得是填充数据的表单控件的祖先元素]
* @param datas:数组数据[顺序加载到表单控件中]
* @param datas_config:
* 数组数据的配置项配置:数组中需要加载的元素对应值为true;反之为false;)
* @notice 需要填充数据的项必须设置属性data-fill为'true'
* @notice 需要填充数据的项必须设置类名 'data-fill'
*/
function loadDatasToForms(formId, datas, datas_config) {
//判断参数
if (arguments.length != 3) {
throw new Error("Arguments' length is not qualified!");
}
if (typeof(formId) != 'string' || ((datas instanceof Array) != true)) {
throw new Error("Arguments is not qualified!");
} var form = document.getElementById(formId);
var inputs = form.getElementsByClassName('data-fill'); var j = 0;
for (var i = 0; i < datas.length; i++) {
if (datas_config[i] == true) {
inputs[j].value = datas[i];
// console.log('test:inputs['+ j +']:' + inputs[j].value);
// console.log('test:datas['+ i +']:' + datas[i]);
j++;
}
} }

 

使用示例:

加载数据到模态框:

//step1.函数:

    //加载表格行数据到模态框中
function doLoadLineDatasToModal(tableId, modalId, lineNumber) {
var datas = getTableLineData(tableId, lineNumber); //获取表格行数据,返回该行数据的数组
var data_config = [false, true, true, false]; //配置要装载到模态框中的数组元素(配置方法见该API)
loadDatasToForms(modalId, datas, data_config); //将数组数据装载到模态框中 }

//step2:表格

<table class="table table-border table-striped table-text-veritical-middle" id="independentStatistic_table">
<thead style="background-color: #118ee9;color: white">
<th style="width: 15%;color:white">日期</th>
<th style="width: 15%;color:white">病历份数</th>
<th style="width: 40%;color:white">病历页数</th>
<th style="width: 15%;color:white">操作</th>
</thead>
<tbody>
<tr>
<td>2017-03-07</td>
<td>30</td>
<td>33</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',1);">修改</a>
</td>
</tr>
<tr>
<td>2017-03-08</td>
<td>125</td>
<td>23</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',2);">修改</a>
</td>
</tr>
<tr>
<td>2017-03-17</td>
<td>20</td>
<td>87</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',3);">修改</a>
</td>
</tr>
<tr>
<td>2017-04-09</td>
<td>45</td>
<td>98</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',4);">修改</a>
</td>
</tr>
<tr>
<td>2017-01-07</td>
<td>19</td>
<td>32</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',5);">修改</a>
</td>
</tr>
<tr>
<td>2017-03-28</td>
<td>56</td>
<td>45</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',6);">修改</a>
</td>
</tr>
<tr>
<td>2017-05-02</td>
<td>2</td>
<td>56</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',7);">修改</a>
</td>
</tr>
<tr>
<td>2017-06-06</td>
<td>63</td>
<td>36</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',8);">修改</a>
</td>
</tr>
<tr>
<td>2017-04-26</td>
<td>89</td>
<td>60</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',9);">修改</a>
</td>
</tr>
<tr>
<td>2017-03-06</td>
<td>30</td>
<td>33</td>
<td>
<a href="" class="btn btn_view" data-toggle="modal" data-target="#myModal" onclick="doLoadLineDatasToModal('independentStatistic_table','load-modal-form',10);">修改</a>
</td>
</tr>
</tbody>
</table>

  

//step3:效果图

 

JavaScript之加载表格、表单行数据[插件]的更多相关文章

  1. 【EF学习笔记08】----------加载关联表的数据 显式加载

    显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...

  2. 【EF学习笔记07】----------加载关联表的数据 贪婪加载

    讲解之前,先来看一下我们的数据库结构:班级表 学生表 贪婪加载 //贪婪加载 using (var db = new Entities()) { var classes = db.Classes.Wh ...

  3. 【EF学习笔记06】----------加载关联表的数据 延迟加载

    讲解之前,先来看一下我们的数据库结构:班级表 学生表 延迟加载 //延迟加载 using (var db = new Entities()) { //查询班级 var classes = (from ...

  4. jqgrid 分页时,清空原表格数据加载返回的新数据

    由于,我们是动态分页,分页后的数据是在触发分页后动态加载而来.如何使jqgrid清空原数据而加载新数据? 1)调用jqgrid的 clearGridData 方法清空表格数据 2)调用jqgrid的  ...

  5. django:bootstrap table加载django返回的数据

    bootstrap table加载表格数据有两类方式: 一种通过data属性的方式配置,一种是javascipt方式配置 这里看js配置方式: 1.当数据源为.json文件时 url参数写上json文 ...

  6. javascript模块加载框架seajs详解

    SeaJS是一个遵循commonJS规范的javascript模块加载框架,可以实现javascript的模块化开发和模块化加载(模块可按需加载或全部加载).SeaJS可以和jQuery完美集成,使用 ...

  7. 前端性能优化:细说JavaScript的加载与执行

    本文主要是从性能优化的角度来探讨JavaScript在加载与执行过程中的优化思路与实践方法,既是细说,文中在涉及原理性的地方,不免会多说几句,还望各位读者保持耐心,仔细理解,请相信,您的耐心付出一定会 ...

  8. KnockoutJS 3.X API 第七章 其他技术(1) 加载和保存JSON数据

    Knockout允许您实现复杂的客户端交互性,但几乎所有Web应用程序还需要与服务器交换数据,或至少将本地存储的数据序列化. 最方便的交换或存储数据的方式是JSON格式 - 大多数Ajax应用程序今天 ...

  9. 转: javascript模块加载框架seajs详解

    javascript模块加载框架seajs详解 SeaJS是一个遵循commonJS规范的javascript模块加载框架,可以实现javascript的模块化开发和模块化加载(模块可按需加载或全部加 ...

随机推荐

  1. 关于RabbitMQ Queue Argument的简介

    1.Message TTL message在队列queue中可以存活多长时间,以毫秒为单位:发布的消息在queue时间超过了你设定的时间就会被删除掉. channel.queueDeclare(&qu ...

  2. html5 简介

    html5基于html.html dom.xhtml的新版本. 为html5建立的一些新规则: 基于html.dom.xhtml和javascript: 减少对外部插件的需求,比如flash: 更多取 ...

  3. jquery stop()、callback、鏈接

    stop(stopAll,goToEnd) stop適用於所有的效果,包括顯示隱藏.滑動.淡入淡出和動畫. stopAll默認值為false,清除當前動畫,可以向後執行下一動畫調用,黨改為true,清 ...

  4. Jenkins中使用GitLab的配置

    1. 概述 在Jenkins中从GitLab上拉取代码进行打包或测试. 2. 安装 Jenkins和GitLab默认已经安装好,安装过程此处不再赘述. 在Jenkins上安装Git和Gitlab插件, ...

  5. face detection,landmark, recognition with deeplearning

    人脸特征点定位 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Neural Networks c ...

  6. P2209 [USACO13OPEN]燃油经济性Fuel Economy

    题面 sol:(思想):开一个大根堆和一个小根堆,每次计算到下了一个加油站用掉的油时尽量用小根堆中的元素,且同时删去大根堆中的相应位置的元素,当前加油站如果足够便宜,就可以把大根堆中的元素替换掉: ( ...

  7. Centos7 ping 未知的名称或服务 DNS 配置问题

    通常解析不了域名一般都是DNS域名配置有问题 对接口添加dns信息:编辑/etc/sysconfig/network-scripts/ifcfg-ethxxxxxxx,x可能是其他数字,但一般是ifc ...

  8. BZOJ4530 BJOI2014大融合(线段树合并+并查集+dfs序)

    易知所求的是两棵子树大小的乘积.先建出最后所得到的树,求出dfs序和子树大小.之后考虑如何在动态加边过程中维护子树大小.这个可以用树剖比较简单的实现,但还有一种更快更优美的做法就是线段树合并.对每个点 ...

  9. 遍历List、Map删除元素

    遍历List删除元素 方法一: List<String> list = new ArrayList<>(); list.add("1"); list.add ...

  10. 架构师成长之路7.1 CDN理论

    点击返回架构师成长之路 架构师成长之路7.1 CDN理论 CDN,Content Distribute Network,内容分发网络:CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数 ...