请大神帮忙优化下这段js代码的写法

qingwadaxia_1 2020-09-28 04:38:19
var data1 = {
city: ["1", "2", "3"],
num: ["10", "11", "12"]
}

var data2 = {
city: ["4", "5", "6"],
num: ["20", "21", "22"]
}


var data3 = {
city: ["7", "8", "9"],
num: ["15", "16", "17"]
}


function xuanze(sj1) {}

xuanze(data1)

for (let i = 0; i < optionsli.length; i++) {
optionsli[i].index = i;
optionsli[i].onclick = function() {
if (this.index == 0) {
xuanze(data1)

}
if (this.index == 1) {
xuanze(data2)
}

if (this.index == 2) {
xuanze(data3)
}

}

}

上面是一个点击加载某个函数的代码,当var date变量过多,比如data4 data5 data6更多的时候,一条条是去判断点击了哪个,加载哪个函数,肯定不合适,但是函数好像拼接写法又有问题, 所以想请大家帮忙优化下,怎么写比较合适
...全文
6026 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingwadaxia_1 2020-09-29
  • 打赏
  • 举报
回复
引用 2 楼 天际的海浪 的回复:
optionsli[i].onclick = function() { xuanze(eval("data"+(this.index+1))) }
真心感谢,一直不知道怎么转字符串参数怎么转函数调用
放风喽 2020-09-28
  • 打赏
  • 举报
回复
没办法, 你应该想办法把同类的数据放到一个数组里面,
天际的海浪 2020-09-28
  • 打赏
  • 举报
回复

最好是把data1 data2 data3等多个变量改为一个数组。
var data = [{
    city: ["1", "2", "3"],
    num: ["10", "11", "12"]
}, {
    city: ["4", "5", "6"],
    num: ["20", "21", "22"]
}, {
    city: ["7", "8", "9"],
    num: ["15", "16", "17"]
}];

就可以直接 xuanze(data[0])
事件中
    optionsli[i].onclick = function() {
        xuanze(data[this.index])
    }

天际的海浪 2020-09-28
  • 打赏
  • 举报
回复
optionsli[i].onclick = function() { xuanze(eval("data"+(this.index+1))) }
qingwadaxia_1 2020-09-28
  • 打赏
  • 举报
回复
在线等/。。。。。

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧