请选择 进入手机版 | 继续访问电脑版

[新书交流] 按照书里的代码做Tab点击跳转报错

[复制链接]
康睦兔 发表于 2020-11-5 09:35:46
在做Tab点击跳转的时候报错,错误内容:ReferenceError:Can't find variable:fnSetNavMenuIndex at main.html:116,用studio2也在这个问题上报错了,我换了studio3也还是一样,在社区里找到了另外一个说这个问题的帖子,用了版主给的修改代码,还是一样报错,以下是代码<body>
      <header id="header">
          <div class="left">
              <div class="arrow" id="arrow"></div>
              <div class="city" id="city">北京市</div>
          </div>
          <div class="center"></div>
          <div class="right"></div>
      </header>
      <nav id="nav">
          <div class="menu selected" tapmode="selected" onclick="fnSetNavMenuIndex(0);">水果</div>
          <div class="menu" tapmode="selected" onclick="fnSetNavMenuIndex(1);">食材</div>
          <div class="menu" tapmode="selected" onclick="fnSetNavMenuIndex(2);">零食</div>
          <div class="menu" tapmode="selected" onclick="fnSetNavMenuIndex(3);">牛奶</div>
          <div class="menu" tapmode="selected" onclick="fnSetNavMenuIndex(4);">蔬菜</div>
      </nav>
  </body>


<script type="text/javascript" src="../script/api.js"></script>
  <script type="text/javascript">
      apiready = function(){
          $api.fixStatusBar(
              $api.byId("header")
          );
          var frames = [];
          for (let i = 0; i < 5; i++) {
              frames.push({
                  names: 'main_frame_' + i,
                  url: './main_frame.html',
                  pageParam: {
                      wareTypeIndex: i
                  }
              });         
          }

          var header = $api.byId("header");
          var nav = $api.byId("nav");
          var headerH = $api.offset(header).h;
          var navH = $api.offset(nav).h;

          api.openFrameGroup({
              name: 'mainFrameGroup',
              scrollEnabled: true,
              rect: {
                  x: 0,
                  y: headerH + navH,
                  w: 'auto',
                  h: 'auto'
              },
              index: 0,
              frames: frames,
              preload: frames.length
          }, function(ret, err){
              var menus = $api.domAll($api.byId("nav"),".menu");
              for (let i = 0; i < menus.length; i++) {
                  $api.removeCls(menus[i],'selected');
              }
              $api.addCls(menus[ret.index],'selected');
          })

          function fnSetNavMenuIndex(index_) {
              var menus = $api.domAll($api.byId("nav"),".menu");
              for (let i = 0; i < menus.length; i++) {
                  if (index_ == i) {
                      $api.addCls(menus,'selected');
                  } else {
                      $api.removeCls(menus,'selected');
                  }
              }
              api.setFrameGroupIndex({
                  name: 'mainFrameGroup',
                  index: index_,
                  scroll: true
              });
          }
      };
  </script>



3条回复

康睦兔 驾校小白 11Y币
function fnSetNavMenuIndex(index_) {
        for (var i = 0; i < menus.length; i++) {
            if (index_ == i) {
                $api.addCls(menus, 'selected');
            } else {
                $api.removeCls(menus, 'selected');
            }
        }
        api.setFrameGroupIndex({
            name: 'mainFrameGroup',
            index: index_
        });

    }
用了https://community.apicloud.com/b ... peid%26typeid%3D192这篇帖子里版主的代码也还是一样
康睦兔 驾校小白 11Y币
function是不写在apiready里边的,写在外边就可以了
特特法爷 管理员 3335Y币
康睦兔 发表于 2020-11-5 10:27
function是不写在apiready里边的,写在外边就可以了

是这样吗?
您需要登录后才可以回帖 登录

本版积分规则