/***
* 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. YII2十三大特性2

    第十三 场景(scenario)的使用 例如:有三个场景,分别为创建,更新,确认回款 首先,定义所有的场景,及规则,如下所示: <?php namespace core\models; use ...

  2. Mysql 乐观锁

    转载:http://chenzhou123520.iteye.com/blog/1863407 乐观锁介绍: 乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般 ...

  3. js對象

    js聲明一個數據,即使沒有賦值,也是創建了一個對象: js的所有數據都是對象,對象裡面有屬性也有方法,屬性方法是對象中的成員: 訪問對象的屬性:objectname.屬性名 訪問對象的方法:objec ...

  4. Lodop客户端本地角色注册号常见误区

    之前写过一篇关于Lodop和c-lodop注册号的区别:LODOP.C-LODOP注册号的区别第一种角色客户端本地打印角色是最常见的角色,最常见的场景,关于c-lodop云打印,它的第一种角色是取代L ...

  5. 当你觉得大学没学到Linux时的感想

    你的大学生活是什么样的呢?你在大学有学到特殊的技能吗?你可以在大学毕业的时候找到一份满意的工作吗?当这些问题摆在你面前的时候,你会迷茫吗,绝大多数的人在毕业的时候并不能找到一份好的工作,那不是因为你的 ...

  6. Ubuntu 16.04安装Maven

    此篇为http://www.cnblogs.com/EasonJim/p/7139275.html的分支页. 前提:必须正确安装JDK. 一.通过二进制包(tar.gz)安装 下载: 进入下载列表:h ...

  7. docker --Nexus仓库

    Nexus 简介 Nexus 是个仓库管理器,目前主要分2大版本:2.X 和 3.X.2.X 主要支持的格式是Maven.P2.OBR.Yum.3.X主要支持的是Docker.NuGet.npm.Bo ...

  8. centOS7 修改DNS

    #显示当前网络连接 #nmcli connection show NAME UUID TYPE DEVICE eno1 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802 ...

  9. 小trick总结

    一个圆上的整点数量不会很多.(Cf AIM TR 5 F) 二分图完美匹配求字典序最小的方案:先一遍匈牙利求出任意一组完美匹配.再跑一遍逐位确定,要求不能修改编号比它小的匹配.(LG 4100) 如果 ...

  10. Eclipse 插件Maven在使用 add dependency,找不到包,解决办法

    通过右键单击pom.xml文件选择maven –> add dependency 或者是打开pom.xml文件,选择dependencies –>add 时,搜索不到依赖的jar包,解决方 ...