【APICloud】选项卡切换万用js函数

    之前自己做项目的时候遇到过这个问题,现在想起来就传上来了^-^

    因为项目需求,标签的个数和具体的选项个数都是后台可改变的,所以需要用万用的函数解决标签切换的问题,得益于apicloud的出色设计,最后抠出来了这个方案,简单的例子是这样的

【APICloud】选项卡切换万用js函数_第1张图片

(3x4的例子  PS:这里所有的标签和选项的个数和名称以及简介都需要可更换)

HTML代码:

塑料
金属
纸类
101
$9.99/个
102
$0.99/个
103
$9.99/个
104
$0.99/个
###demo_2
###demo_3

这个是可替换区域里的一个例子(我这里写的是一个3x4的例子),我用的方法是做简单的div嵌套,屏幕适应性比较高,也比较简单,css这里具体的代码不难就不发上来了,但是要注意为了可以方便后台更改标签

!!!这里的所有区块position属性不能是absolute!!!

建议使用flex布局,可以自行度娘)


js代码:(下面会有详解)

var count = 0;
var last_bind = 0;


function table () {
  var irem = last_bind;
  var iadd = check;
  var xxx = $api.domAll('.list_table');
  var board_z = $api.domAll('.list_board');

  if (irem != iadd) {
    $api.removeCls(xxx[irem], 'active');
    $api.addCls(xxx[iadd], 'active');
    last_bind = iadd;

    $api.removeCls(board_z[irem], 'active_board');
    $api.addCls(board_z[iadd], 'active_board');
  }
}

(为讲解方便我故意在函数前几行多写了一次呈递,实际可以省略)

在开头我建立了2个变量:count(当前选项)和 last_bind(上一打开选项  PS:两个变量初始化默认为0,0 即状态为:第一个选项卡将要(已经)打开,当前打开选项卡为第一选项卡) 负责记录选项卡的开关状态,因为闭包函数关闭即掉电,无法长期存储数据记录状态,所以以全局变量的逻辑写在外围,js文件打开即调用

函数调用流程:在html里调用这个函数的时候传入了check值,为了区分是由哪个选项卡调用此函数。然后从last_bind获取当前打开的选项卡,再从视图层传入的check获取将要打开的选项卡。(这里我在视图层使用了active动态样式切换开关状态,这个技巧APICloud文档上有)接下来用 $api.domAll 获取所有包含 .list_table 这一dom类的所有区块(即选项卡,这个例子里是图里的三个 PS:这个返回值是一个包含这三个区块ID的数组,若未设置ID会显示undefind),在获得了区块之后再用同样的方法获取右半部分的选项面板的ID(面板是用不同的层数写在一起的,实际上没有打开的面板收在了当前显示的页面之下)最后if条件框里依照last_bindcount记录的状态移除要关闭的标签和将要打开的标签切换为动态

全过程除需要视图层传入check值之外没有额外的定制化代码(check可以在后台在改动时同时添加(后台采用object或block方法将前端框架写在服务器上,App打开时一次性加载))




以上就是粗略的过程了,dalao们若发现有错误非常感谢评论指出:)


你可能感兴趣的:(【APICloud】选项卡切换万用js函数)