请选择 进入手机版 | 继续访问电脑版
帖子
帖子
用户
博客
课程
12下一页
返回列表 发新帖
显示全部楼层
71
帖子
2
勋章
2159
Y币

[其他] 学习仿每日优鲜无法实现framegroup打开页面及跳转

[复制链接]
发表于 2020-3-18 11:58:41
学习到视频第二章13节,界面跳转与窗口切换,完全按照讲解一步步跟随操作,也仔细核对了实现的代码与示例代码一致,也尝试了编译自定义loader,原来使用的APPloader, 但现在还是无法实现页面跳转,提示错误是:fnsetNavMenuIndex未定义,但实际上已经定义了,求指点:
代码如下:
<body>
  <header id="header">
    <div class="left"tapmode>
      <div class="arrow" id="arrow"></div>
      <div class="city" id="city">北京市</div>
    </div>
    <div class="center"></div>
    <div class="right"tapmode></div>
  </header>
  <nav id="nav">
      <div class="menu selected" tapmode="selected">水果</div>
      <div class="menu" tapmode="selected">食材</div>
      <div class="menu" tapmode="selected">零食</div>
      <div class="menu" tapmode="selected">牛奶</div>
      <div class="menu" tapmode="selected">蔬菜</div>
  </nav>


</body>
<script type="text/javascript" src="../script/api.js"></script>
<script type="text/javascript">



apiready = function() {

//  initEventListenner();    这条是在讲解中未有的,但在示例的完成文件中有的,但添加或关闭后无影响,仍然打不开


  var header = $api.byId('header');
  var nav = $api.byId('nav');

  $api.fixStatusBar(header);

   var headerH = $api.offset(header).h;
   var navH = $api.offset(nav).h;
//获取所有的分类菜单
   menus = $api.domAll(nav, '.menu');
   //构造FrameGroup中的Frame数组
  var frames = [];
    for ( var i=0 ; i < menus.length; i++){
        frames.push({     //push为js的一个方法,是向数组末尾添加新元素
            name: 'main_frame_' + i,
            url: './main_frame.html',
        })
    }

//打开FrameGroup
      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) {
        fnSetNavMenuSelected(ret.index);

      });
var menus;

function fnSetNavMenuIndex(index_) {
  fnSetNavMenuSelected(index_);
    api.setFrameGroupIndex({
        name: 'mainFrameGroup',
        index: index_,
        scroll: true
    });

}

function fnSetNavMenuSelected(index_) {
  for (var i = 0; i < menus.length; i++) {
    if (index_ == i) {
      $api.addCls(menus[i] 'selected');
    } else {
      $api.removeCls(menus[i], 'selected');

        }
      }
    }

</script>


9
帖子
0
勋章
5634
Y币
fnSetNavMenuIndex函数写在apiready外面试试
71
帖子
2
勋章
2159
Y币
试了一下,还是不行,然后现在还有个问题,自定义loader无法连接,输入了IP,反复提示输入正确的IP, 这个自定义loader和APPloader能同时在模拟器和手机里存在吗,还是装了自定义的,必须把原来的APPloader删掉
71
帖子
2
勋章
2159
Y币
试了一下,还是不行,另外还有个问题,现在用刚安装的自定义loader无法连接,输入正确的IP,反复提示IP错误,是自定义和原来的APPloader不能在手机和模拟器中并存吗,必须把原来的APPloader删掉
71
帖子
2
勋章
2159
Y币
这个发帖网页可能也有点问题,点击完发送,就什么都没有了,也不更新,还以为刚输入的都丢了呢,就再发,然后一会又显示发来两遍
9
帖子
0
勋章
5634
Y币
qodomo 发表于 2020-3-18 14:40
试了一下,还是不行,另外还有个问题,现在用刚安装的自定义loader无法连接,输入正确的IP,反复提示IP错误 ...

不用
71
帖子
2
勋章
2159
Y币
想了一个歪招,把自己跟随操作的main.html改名,然后把示例文件中的main.html拷进来,但还是不行,错误提示一样?
9
帖子
0
勋章
5634
Y币
试试我的

  1. <!DOCTYPE HTML>
  2. <html>

  3. <head>
  4.     <meta charset="utf-8">
  5.     <meta name="viewport" content="maximum-scale=1.0, minimum-scale=1.0, user-scalable=0, initial-scale=1.0, width=device-width" />
  6.     <meta name="format-detection" content="telephone=no, email=no, date=no, address=no">
  7.     <title>Hello APP</title>
  8.     <link rel="stylesheet" type="text/css" href="../css/api.css" />
  9.     <style>
  10.         header {
  11.             width: 100%;
  12.             height: 50px;
  13.             background-color: #333;
  14.             position: relative;
  15.             color: #fff;
  16.         }

  17.         header .city {
  18.             position: absolute;
  19.             top: 0;
  20.             left: 10px;
  21.             height: 50px;
  22.             line-height: 50px;
  23.         }

  24.         header h2 {
  25.             height: 50px;
  26.             line-height: 50px;
  27.             text-align: center;
  28.         }

  29.         header .login {
  30.             position: absolute;
  31.             top: 0;
  32.             right: 10px;
  33.             height: 50px;
  34.             line-height: 50px;
  35.         }

  36.         nav {
  37.             display: flex;
  38.             width: 100%;
  39.             height: 40px;
  40.         }

  41.         nav .menu {
  42.             flex: 1;
  43.             width: 100%;
  44.             height: 40px;
  45.             line-height: 40px;
  46.             background: pink;
  47.             color: #fff;
  48.             text-align: center;
  49.         }

  50.         nav .selected {
  51.             color: red;
  52.             font-weight: 700;
  53.         }
  54.     </style>
  55. </head>

  56. <body>
  57.     <header>
  58.         <div class="city" onclick="openCity()">
  59.             城市
  60.         </div>
  61.         <h2>每日优鲜</h2>
  62.         <div class="login" onclick="login()">
  63.             登录
  64.         </div>
  65.     </header>
  66.     <nav>
  67.         <div class="menu selected" tapmode onclick="fnSetNavMenuIndex(0)">水果</div>
  68.         <div class="menu" tapmode onclick="fnSetNavMenuIndex(1)">水果</div>
  69.         <div class="menu" tapmode onclick="fnSetNavMenuIndex(2)">moviePlayer</div>
  70.         <div class="menu" tapmode onclick="fnSetNavMenuIndex(3)">水果</div>
  71.     </nav>
  72. </body>
  73. <script type="text/javascript" src="../script/api.js"></script>
  74. <script type="text/javascript">
  75.     //  获取  ul 下的 li
  76.     var menus = $api.domAll('.menu');
  77.     // 定义空数组 存放framesGroup 里的每个
  78.     var frames = [];
  79.     for (var i = 0; i < menus.length; i++) {
  80.         frames.push({
  81.             name: 'frame' + i,
  82.             url: './frame' + i + '.html',
  83.             bgColor: '#fff'
  84.         })
  85.     }
  86.     apiready = function() {

  87.         api.openFrameGroup({
  88.             name: 'mainFrameGroup',
  89.             scrollEnabled: true,
  90.             rect: {
  91.                 x: 0,
  92.                 y: 90,
  93.                 w: 'auto',
  94.                 h: 'auto'
  95.             },
  96.             index: 0,
  97.             bounces: true,
  98.             frames: frames
  99.         }, function(ret, err) {

  100.             //当index的值改变时  又会执行该回调函数
  101.             // fnSetNavMenuSelected(ret.index);
  102.         });

  103.     };
  104.     // 点击不同 的 meau  就会调用该函数  改变index的值
  105.     function fnSetNavMenuIndex(index_) {
  106.         for (var i = 0; i < menus.length; i++) {
  107.             if (index_ == i) {
  108.                 $api.addCls(menus[i], 'selected');
  109.             } else {
  110.                 $api.removeCls(menus[i], 'selected');
  111.             }
  112.         }
  113.         api.setFrameGroupIndex({
  114.             name: 'mainFrameGroup',
  115.             index: index_
  116.         });

  117.     }

  118.     function fnSetNavMenuSelected(index_) {
  119.         // 次函数执行时会 改变 meau的样式

  120.     };

  121.     function openCity() {
  122.     var cityList = api.require('cityList');
  123.         cityList.open({
  124.             currentCity: '北京',
  125.             resource: '../res/city.json'
  126.         }, function(ret, err) {
  127.             var cityInfo = ret.cityInfo;
  128.         });
  129.     }

  130.     function login() {
  131.         api.openWin({
  132.             name: 'login',
  133.             url: './login.html',
  134.         })
  135.     };
  136. </script>

  137. </html>
复制代码


71
帖子
2
勋章
2159
Y币
哇塞,您这个也太费心了,多谢,我试试
71
帖子
2
勋章
2159
Y币
截图未命名 7.jpg 截图未命名 8.jpg

试了一下,还是不行,不管怎样还是多谢您,我自己也再琢磨琢磨!
12下一页
您需要登录后才可以回帖 登录

本版积分规则