最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Javascript通过json自动生成Dom的代码_json

来源:动视网 责编:小采 时间:2020-11-27 20:48:21
文档

Javascript通过json自动生成Dom的代码_json

Javascript通过json自动生成Dom的代码_json:json转html 三重奏 原料:json 代码如下: var json={ 'div':{id:'flower',className:a1,sub:[ { 'ul':{id:'flower1',className:[a2,a3],sub:[ {'li':{num:3,con:内容内容内容,fn:{'click':function
推荐度:
导读Javascript通过json自动生成Dom的代码_json:json转html 三重奏 原料:json 代码如下: var json={ 'div':{id:'flower',className:a1,sub:[ { 'ul':{id:'flower1',className:[a2,a3],sub:[ {'li':{num:3,con:内容内容内容,fn:{'click':function


json转html 三重奏
原料:json
代码如下:
var json={
'div':{id:'flower',className:"a1",sub:[
{
'ul':{id:'flower1',className:["a2","a3"],sub:[
{'li':{num:3,con:"内容内容内容",fn:{'click':function(){alert('我是LiLi')}}}}
]}
},
{
'ul':{id:'flower4',className:["a2","a3"],sub:[
{'li':{num:3,con:"第2轮了",fn:{'click':function(){alert('我是LiLi')}}}}
]}
},
{
'span':{id:'q',con:"我是span"}
}
]}
}

id=id
className=class
num=循环次数
fn=绑定函数
con=元素内容
sub =代表有子节点
主菜:method
代码如下:
JsonToHtml={
init:function(data,parent){//jsonDB,父元素
for(var attr in data){
if(data[attr]["id"]){var num=1}else{var num=data[attr]["num"]||1}//如果存在id,则循环默认为1,因为id不可重复
for(var j=0;jvar obj= document.createElement(attr);
parent ? parent.appendChild(obj) : document.body.appendChild(obj);//递归时传入父元素,没有则默认从body输出
for(var attr2 in data[attr]){
var _tempAttr=data[attr][attr2];
switch(attr2){
case "id":
obj.id=_tempAttr;
break;
case "className": //支持多个class传入~简了点~
if(_tempAttr.length && _tempAttr.pop){
for(var k=0;k<_tempAttr.length;++k){
obj.className= obj.className+" "+_tempAttr[k] ;
}
}else{ obj.className =_tempAttr;}
break;
case "sub": //如果有子节点则开始递归
for(var i=0;i<_tempAttr.length;i++){
_tempAttr[i].sub ? this.init(_tempAttr[i]) : this.init(_tempAttr[i],obj)
}
break;
case "con"://设置内容,可以生成新的子元素
obj.innerHTML=_tempAttr;
break;
case "num":
break;
case "fn"://绑定方法
for(var fns in _tempAttr){
if (window.addEventListener) {
obj.addEventListener(fns, _tempAttr[fns], false);
} else {
if (window.attachEvent) {
obj.attachEvent("on" + fns, _tempAttr[fns]);
}
}
}
break;
default : //设置属性
obj.setAttribute(attr2,_tempAttr);break;
}
}
}
}
return this;
}
}

JsonToHtml.init(json); //初始化
上菜
代码如下:


  • 内容内容内容

  • 内容内容内容

  • 内容内容内容


  •   
  • 第2轮了

  • 第2轮了

  • 第2轮了


  •   我是span


    主要还是通过递归和迭代来遍历json成员生成html元素 ,比较好的是num能制定循环次数可以少写很多代码.具体应用看场景了
    这只是个小例子,期待后续!

    文档

    Javascript通过json自动生成Dom的代码_json

    Javascript通过json自动生成Dom的代码_json:json转html 三重奏 原料:json 代码如下: var json={ 'div':{id:'flower',className:a1,sub:[ { 'ul':{id:'flower1',className:[a2,a3],sub:[ {'li':{num:3,con:内容内容内容,fn:{'click':function
    推荐度:
    标签: js 代码 json
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top