js函数传入多级菜单项 大家参谋下 本帖最后由 ayayad 于 2013-02-21 19:04:32 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我写的话大约象这样{ "菜单1":"值1",//typfOf =="string" "sep_x":"", "菜单2":{ "菜单2_1":"值2_1", "sep_2_1":"", "菜单2_2":{ ... } } } 忘记中文问题了{ "menu1":{label:"菜单1",value:"key1"}, "sep_x":"", "menu2":{label:"菜单2", "menu2_1":{label:"菜单2_1",value:"key2_1"}, "sep_2_1":"", "menu2_2":{label:"菜单2_2", "menu2_2_1":{label:"菜单2_2_1",value:"key_2_2_1"} } } }funciton showMenu(item){ if("value" in item){ //无下级菜单 }else if(typeOf item =="string"){ //分隔线 }else { var label= item[label]; //处理本级菜单 delete item[label]; for(var key in item){ showMenu(item[key],tag); } }}大约如此 item[label]改成 item.label 你的回答貌似并没有解决多条分隔线不能重复的问题,而且还更复杂了,也许是我没完全理解你的意思。不过真得感谢你,从你的代码里我受到了启发,下面看看我修改后的{ {label:"一级菜单1",value:{{label:"二级菜单1",value:null},{label:"二级菜单2",value:null}}}, {label:"",value:null}, {label:"一级菜单2",value:null}, {label:"",value:null}, {label:"一级菜单3",value:null} }我再等两天结贴 看下有没有更好的回答 我会给你分的 [ { txt :'菜单1' , value : '1' , children : [ { txt :'菜单12' , value : '12' },'-',/*if(typeof xxx=='string' && xxx=='-'){这个是分隔线} */ { txt :'菜单13' , value : '13' , children : [ { txt :'菜单112' , value : '112' },'-',/*if(typeof xxx=='string' && xxx=='-'){这个是分隔线} */{ txt :'菜单122' , value : '122' } ] } ] }, { txt :'菜单2' , value : '2' , children : [ { txt :'菜单22' , value : '22' }, { txt :'菜单23' , value : '23' , children : [ { txt :'423424' , value : '12341234' },{ txt :'24124' , value : '41243' } ] } ] }] 多条分隔线不能重复的问题??原来的想法是有点晕,的确应当是用数组来实现。当然还是建议value与sonsItems分成两个不同的属性名。{menu:[ {label:"",value:""}, {label:"",sons:[ {label:"",value""}, ... ]}]} 这个不错哦 格式很规范 解析起来也方便 我就先用你这个啦另外问一下,我看你们属性中都要加个value属性 我知道这是用来 判断选中值的 就像option中的value但这一定要加吗 txt中虽然有中文符号这些 也并不影响判断啊加value只是一个约定俗成的习惯呢 还是不用value会有什么bug value只是一个约定俗成的习惯,代码不只是给机器看的,也是给人看的。所以定义变量名最好直接能说明这是什么东西。 正则表达式匹配问题求助 怎么解决IE和FF下速度不一致 关于jquery与js数组交互的问题? 菜鸟问题:密码框里的*号如何用其他字符替换掉 使用openlayers进行GIS地图制作中,经过那些处理可以是网站速度加快啊?? 表单中有同样value不同name的按钮,如何判断用户点击的是哪个按钮? 事情紧急,问大家一个关于定位的问题 自定义Image对象的显示,在线等! 高手们,为何我的vml中的阴影和文字不见了 各位大侠帮忙看看,在线等。关于window.location.href 关于JS 关键词高亮显示的代码,如何显示两位数字 关于json2.js引入Eclipse中出现几个错误
"菜单1":"值1",//typfOf =="string"
"sep_x":"",
"菜单2":{
"菜单2_1":"值2_1",
"sep_2_1":"",
"菜单2_2":{
...
}
}
}
"menu1":{label:"菜单1",value:"key1"},
"sep_x":"",
"menu2":{label:"菜单2",
"menu2_1":{label:"菜单2_1",value:"key2_1"},
"sep_2_1":"",
"menu2_2":{label:"菜单2_2",
"menu2_2_1":{label:"菜单2_2_1",value:"key_2_2_1"}
}
}
}
funciton showMenu(item){
if("value" in item){
//无下级菜单
}else if(typeOf item =="string"){
//分隔线
}else {
var label= item[label];
//处理本级菜单
delete item[label];
for(var key in item){
showMenu(item[key],tag);
}
}
}大约如此
不过真得感谢你,从你的代码里我受到了启发,下面看看我修改后的{
{label:"一级菜单1",value:{{label:"二级菜单1",value:null},{label:"二级菜单2",value:null}}},
{label:"",value:null},
{label:"一级菜单2",value:null},
{label:"",value:null},
{label:"一级菜单3",value:null}
}我再等两天结贴 看下有没有更好的回答 我会给你分的
[
{
txt :'菜单1' ,
value : '1' ,
children : [
{
txt :'菜单12' ,
value : '12'
},'-',/*if(typeof xxx=='string' && xxx=='-'){这个是分隔线} */
{
txt :'菜单13' ,
value : '13' ,
children : [
{
txt :'菜单112' ,
value : '112'
},'-',/*if(typeof xxx=='string' && xxx=='-'){这个是分隔线} */{
txt :'菜单122' ,
value : '122'
}
]
}
]
},
{
txt :'菜单2' ,
value : '2' ,
children : [
{
txt :'菜单22' ,
value : '22'
},
{
txt :'菜单23' ,
value : '23' ,
children : [
{
txt :'423424' ,
value : '12341234'
},{
txt :'24124' ,
value : '41243'
}
]
}
]
}
]
原来的想法是有点晕,的确应当是用数组来实现。当然还是建议value与sonsItems分成两个不同的属性名。{menu:[
{label:"",value:""},
{label:"",sons:[
{label:"",value""},
...
]}]
}
但这一定要加吗 txt中虽然有中文符号这些 也并不影响判断啊
加value只是一个约定俗成的习惯呢 还是不用value会有什么bug