有没有什么语句的功能和switch是一样的?

昨天在写一个功能的时候觉得自己的代码复用性太差了,所以想问问有没有简洁一点的写法。
总的就是我需要给一个属性赋值,假设这个属性叫做reserveId,这个属性是一个叫做A的对象的属性,接着我需要获取一组值,可以将这一组值在点击不同的按钮时赋值给reserveId,例如我点击button1的时候可以从这一组值的data【1】赋值给reserveId,然后引发一些事情,点击button2的时候可以将data【2】赋值给reserveId,以此类推....
用switch的话就是switch(i){case 1:巴拉巴拉;break;.....case n:巴拉巴拉;break},这样的话,假设我不知道这一组值有几个的时候就不能够用了,只有我知道i的最大值才能行啊???TAT 困扰死我了

阅读 2.6k
3 个回答

从你的描述里可以知道button和这一组值是相互关联的,那么你要做的也是从这个关联性入手来搞。比如说,这一组值的索引和button的索引是相对的,那么用jQ的话(看你加标签了),就可以先用$('button').index()拿到btn的索引缓存起来(比如是var index),然后你就可以以数组下标的形式取到相应的值,比如这一组值是var value=[],那么点击按钮就会触发回调:

$(document).on('click', 'button', function (e) { //代理早绑定
    var index = $(this).index(); // 拿到索引
    reserveId = value[index]; // 赋值
});

又或者并不是依照索引对应的,那么你可能要稍微麻烦点,把这些值遍历到每个button的data-属性里,触发事件时就可以用$(this).data('xxx')取到相应的值再赋值了。

你的思路有问题...
将需要绑定的属性赋值给buttong的data.
然后点击的时候再读取这个data就好了

如果你的函数处理逻辑都一样,可以把index传进函数里面,用统一的语句执行操作:

function handler(index){
    reserveId=data[index]
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题