JSON数据映射之元素可见控制
2017-11-29 12:21
120 查看
1、效果:
2、demo 源码
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 和 XML )
- Ruby构造元素:数据、表达式、和流程控制
- json数据映射填充到html元素显示
- net.sf.json java在json数据中获取元素
- 使用data()方法在元素上存取移除JSON格式数据 10-6
- Java Web控制层发送Json对象数据(一)
- Json数据解析----------Gson用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库
- SpringMVC原来还有这3种方式从控制层优雅return json数据
- 使用data()方法在元素上存取移除JSON格式数据 10-6
- Java实现app接口和Socket消息传递(6)servlet映射并返回Json数据
- js控制div滚动条,滚动滚动条使div中的元素可见并居中
- 使用Struts 2将客户端JSON数据映射为服务器端Java对象
- js获取后台json数据显示在jsp页面元素
- mvc中使用ajax传数据到控制层再返回json已经乱码问题
- JSON和Java实体之间的数据类型映射
- Java Web控制层发送Json对象数据(二)
- c#中将json数据转换为dictionary并取出某个元素显示
- 将json数据映射成对象的处理办法
- 关于AJAX请求后台数据,接收后台返回的JSON数据,以及前台遍历json数据和append追加元素。
- 将json数据映射到本地数据模型对象的一点想法