【问题标题】:Javascript function not defined, possible namespace issue? [duplicate]Javascript 函数未定义,可能的命名空间问题? [复制]
【发布时间】:2018-09-06 02:02:18
【问题描述】:

我不明白为什么。我怀疑这是一个命名空间问题,但函数及其调用是在同一个文档就绪函数中定义的。

当我尝试在控制台中调用该函数时,我得到 calcPCs is not defined

$(document).ready(function() {
    function calcPCs(id) {

        var si = $(id).find(".Screened-In").text();
        var so = $(id).find(".Screened-Out").text();

        var ref = $(id).find(".Referred").text();
        var ret = $(id).find(".Retained").text();

        $(id).find(".Screened-In").append(' (' + Math.floor((+si / (+si + +so)) * 100) + '%)');
        $(id).find(".Screened-Out").append(' (' + Math.floor((+so / (+si + +so)) * 100) + '%)');

        $(id).find(".Referred").append(' (' + Math.floor((+ref / (+ref + +ret)) * 100) + '%)');
        $(id).find(".Retained").append(' (' + Math.floor((+ret / (+ref + +ret)) * 100) + '%)');
    };            

    calcPCs("#northwest");
    calcPCs("#northeast");
    calcPCs("#west");
    calcPCs("#east");
    calcPCs("#central");
    calcPCs("#gtr");
});

【问题讨论】:

  • 发布确切的错误。
  • 抱歉刚刚编辑了我的帖子以包含在内。 'calcPCs 未定义'
  • 包含堆栈跟踪会有所帮助,因为错误似乎不在您提供的代码中。您一定在其他地方尝试使用calcPCs
  • 你在其他地方调用 calcPCs 吗?
  • @zzzzBov 可以给我们一个吗?

标签: javascript jquery function namespaces


【解决方案1】:

您不能从控制台调用calcPCs。您在控制台中键入的任何代码都在全局命名空间中执行,但 calcPCs 是在您传递给 .ready() 的匿名函数中定义的,因此算作该函数的局部变量。局部变量在函数体外部不可用。

【讨论】:

  • 附加说明。您可以从控制台执行该方法,前提是您在该方法可用的范围内设置了一个断点。一旦断点被​​命中,当它被暂停时,你可以从控制台运行该方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2021-02-01
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多