首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript中的全局变量无法按预期工作

javascript中的全局变量无法按预期工作
EN

Stack Overflow用户
提问于 2016-01-23 08:14:05
回答 3查看 111关注 0票数 0

这是代码,我在函数中有一个菜单全局变量。我想在它之外使用它,但是我得到了一个“未定义的引用错误...·这是我仅有的javascript代码,所以不会干扰其他变量或函数。

提前谢谢。

代码语言:javascript
运行
复制
$(function() {
  menu =  $('nav#menu').mmenu(
    {   
      navbars: [
        {
          position: "top",  
          height    : 1,
          content : [ 
            '<a href="#/" class="fa fa-phone"></a>',
            '<img src="imagenes/wheel32.png" /><p class="navbartxt">bicimap.uy</p>',                    
          ]
        },
        {
          position: "bottom",
          content: [
            '<a class="fa fa-envelope"></a>',
            '<a class="fa fa-twitter"></a>',
            '<a class="fa fa-facebook"></a>'
          ]
        }
      ],                    
      extensions: ["multiline"],    
      onClick: {
        close: false
      },
      navbar:{
        title: "Inicio"                     
      },
      offCanvas: {           
        zposition : "next"
      }
    });         
  });

我需要将此代码放入函数中才能使其正常工作

代码语言:javascript
运行
复制
var API = $("#menu").data( "mmenu" );

menu.on( 'click', 'a[class^="fa fa-twitter"]', function() {  
  $('#twitter').show();                 
  var API = $("#menu").data( "mmenu" );
  API.close();      

  return false;
});
EN

回答 3

Stack Overflow用户

发布于 2016-01-23 08:21:50

我在这里缺少一些背景(我假设我们还没有看到更多?)

但您可能会在$(…)内部的代码运行之前执行后一个代码片段menu.on( 'click'… (在dom就绪时);因此menu将是未定义的。

如果您刚刚开始,那么有必要研究一下浏览器的开发人员工具,了解断点和日志记录。

您需要确保仅在设置了menu之后才使用它,很可能是通过延迟所有调用以使其处于就绪状态。

执行顺序

  1. $被调用,并且该函数被作为第一个也是唯一一个参数提供。函数本身不是由called.
  2. API的结果定义的)这取决于您已添加此脚本的html文件中的位置。
  3. 根据您尝试在menu上调用的
  4. 的结果调用data方法(稍后仍为undefined
  5. sometime ),调用您传递给$的函数,并最终定义菜单,以便以后有用<代码>H221<代码>G222
票数 1
EN

Stack Overflow用户

发布于 2016-01-23 08:22:18

如果您的闭包/匿名函数是异步发生的,那么在计算其余代码时,工作可能还没有完成。我需要更多的上下文来确定这一点。

票数 0
EN

Stack Overflow用户

发布于 2016-01-25 14:42:13

这就是我找到的解决方案,也许它不是最好的,因为它可能会带来问题。由于某些原因,ready函数不能像上面显示的那样工作,可能需要一些资源。

代码语言:javascript
运行
复制
menu = null;
$(function() {

            menu =  $('nav#menu').mmenu(

            {   
                navbars     : [{
                    position: "top",    
                    height  : 1,
                    content : [ 

                        '<img src="imagenes/wheel32.png" /><p class="navbartxt">bicimap.uy</p>',                

                    ]
                },
                {
                    position: "bottom",
                    content: [
                        '<a class="fa fa-envelope"></a>',
                        '<a class="fa fa-twitter"></a>',
                        '<a class="fa fa-facebook"></a>'
                    ]
                }
                ],                  
                extensions: ["multiline"],  
                 onClick: {
                    close: false
                 },
                navbar:{
                    title: "Inicio"                     
                },
                offCanvas: {
                  zposition : "next"
                }

        });

    });


$( window ).load(function() {

  var API = $("#menu").data( "mmenu" );

        menu.on( 'click', 'a[class^="fa fa-twitter"]', function() {  
                        $('#twitter').show();

                          var API = $("#menu").data( "mmenu" );
                          API.close();      

                        return false;
                    }
         );

});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34958079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档