JSON数据映射之元素可见控制
1、效果:

2、demo 源码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>javascript test</title>
<style media="screen">
.write{
opacity: 0;
}
.visible {
opacity: 1;
}
button{
transition: opacity 1s ease;
}
</style>
</head>
<body>
<h3>控制前展示的项目依次:</h3> save、stop、cancel -- delete、submit、view -- update、export
<h3>控制之后展示项目:</h3>
<button type="button" class="cpe kpi write">save</button>
<button type="button" class="cpe kpi write">stop</button>
<button type="button" class="cpe kpi write">cancel</button> --
<button type="button" class="enb monitor write">delete</button>
<button type="button" class="enb monitor write">submit</button>
<button type="button" class="enb monitor write">view</button> --
<button type="button" class="operator query write">update</button>
<button type="button" class="operator query write">export</button> <h3>控制设置 - options:<font size="1">修改后点击窗口即生效</font></h3>
<textarea id="jsontxt" rows="18" cols="40">
{
cpe:{
kpi:{
write: true
}
},
enb:{
monitor:{
write: false
}
},
operator:{
query:{
write: true
}
}
}
</textarea>
</body>
<script type="text/javascript">
document.addEventListener('click',function(){
var jsonstr = document.querySelector('#jsontxt').value.trim(),
json = eval('('+jsonstr+')');
accessControl(json);
});
document.dispatchEvent(new Event('click'));
/**
* json数据映射到html
* @param obj: json数据
* @param path: 根路径,name属性的映射前缀(属性计算用到,使用者不用管)
**/
function accessControl(obj,path){
var props = {};
for (var key in obj) {
var propPath = path;
if (path) propPath = path + '.' + key;
else propPath = '.'+key;
/* 迭代子关系 */
if(typeof obj[key] === 'object') arguments.callee(obj[key], propPath);
else props[propPath] = obj[key];
}
/* 数据映射到 html */
for (var key in props) {
var doms = Array.from(document.querySelectorAll(key));
if(doms.length==0) continue;
doms.map(function(dom){setPermission(dom,props[key]);})
}
function setPermission(domObj,visibale){/* 可见设置 */
var isHave = Array.from(domObj.classList).includes('visible');
if(visibale) {
if(!isHave) domObj.classList.add('visible');
}else {
if(isHave) domObj.classList.remove('visible');
}
}
}
</script>
</html>
JSON数据映射之元素可见控制的更多相关文章
- json数据映射填充到html元素显示
映射算法做了改进,支持name重复映射 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- Android中使用Gson解析JSON数据
Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...
- Golang: 解析JSON数据之二
上次我们介绍了 Go 语言中序列化和反序列化 JSON 数据的两个方法 Marshal() 和 Unmarshal(),并以示例演示了它们的用法. 我们在例子中看到,需要事先声明好对应的结构体,才能跟 ...
- Golang: 解析JSON数据之一
JSON 作为目前最流行的数据传输格式, 相信每个程序员都跟它打过交道吧.使用 Go 语言时,也不可避免的要操作 JSON 数据,令人惊喜的是,Go 内置了序列化和反序列化 JSON 的功能,今天就来 ...
- springmvc-高级参数绑定-映射-异常-json数据交互-拦截器
1.1. 高级参数绑定 1.1.1. 复制工程 把昨天的springmvc-web工程复制一份,作为今天开发的工程 复制工程,如下图: 粘贴并修改工程名为web2,如下图: 工程右键点击,如下图: 修 ...
- json数据渲染表单元素出现的问题
解析页面表单元素 parseForm: function () { var data = {}; $(this).find('input').each(function () { switch ($( ...
- 控制层解析post请求中json数据的时候,有些属性值为空
原因: 1.默认json数据解析的时候,值会赋给键的首字母是小写的封装的bean中的属性,如果没有首字母小写的属性,也不会报错.即bean中有getXXX方法时,从json到model会增加xxx属性 ...
- 原生js,jquery通过ajax获得后台json数据动态新增页面元素
一.原生js通过ajax获取json数据 因为IE浏览器对ajax对象的创建和其他浏览器不同,为了兼容全部浏览器,我用下面的代码: function createXMLHttpRequest(){ t ...
随机推荐
- day27 异常处理 和 网络协议
元类补充 class MyMeta(type): # 用于新建类对象 def __new__(cls,*args,**kwargs) print(MyMeta) print(*args) # 调用ty ...
- 修改app工程名 Android Studio
1.关掉AndroidStudio,在原项目最外层文件夹和内部xxx.iml上直接重新命名, 2.然后重新打开AndroidStudio,加载项目, 3.最后
- 如何正确获取MYSQL的ADO连接字符串
首先你正确安装了MYSQL的数据库驱动程序(mysql-connector-odbc-5.3.2-win32.msi )http://dev.mysql.com/downloads/connector ...
- 2017最新整理移动Web开发遇到的坑
随着前端的热度不断升温,行业对前端的要求越来越高:精准无误的实现UI设计,已成为前端职业更加精细化的一种表现:随着移动互联网的发展.WebApp似乎一种不可逾越的鸿沟:越来越多的企业开始趋势于轻量级的 ...
- pta l2-1紧急救援(Dijkstra)
题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805073643683840 题意:给n个城市,m条边,每个城市 ...
- JMeter快速入门之Badboy录制
1. 前言 JMeter录制有两种方式,一种是JMeter自带录制方法,另一种是下面要学习的Badboy录制,个人推荐使用此方法 下面教程不设计Badboy安装,可以百度一下. 2. 录制步骤: 2. ...
- Delphi: TMemo垂直滚动条自动显示
项目中碰到此问题,之前一直没留意,研究一番用上,以做备忘.参考其它解决方法,不尽完美,自试之,达到效果. 直上代码: type TMemo = class(StdCtrls.TMemo) protec ...
- JAVA读取XML文件并解析获取元素、属性值、子元素信息
JAVA读取XML文件并解析获取元素.属性值.子元素信息 关键字 XML读取 InputStream DocumentBuilderFactory Element Node 前言 最 ...
- call指令
CPU执行call指令时,进行两步操作: 将当前的IP或CS和IP压入栈中; 转移. call指令不能实现短转移,除此之外,call指令实现转移的方法和jmp指令的原理相同. 1)依据位移进行转移的c ...
- 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX(转)
原文地址:https://www.cnblogs.com/feng18/p/5646925.html 从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'g ...