【问题标题】:Return value NaN from function从函数返回值 NaN
【发布时间】:2011-03-03 21:39:02
【问题描述】:

这是我的功能,这是可行的:

 my.SetTablepagerIndex = function() {
    var blah = $("#currentPage").text();
    var test = blah.indexOf("o");
    var pagerIndex = $.trim(blah.substring(4, test));
    return pagerIndex;
}

然后,我将其分配给一个 var。为什么这不起作用?我只是得到一个'NaN'

var index = Util.SetTablepagerIndex();

我不想声明一个全局变量,所以如果我所做的是一件坏事,那么传递这个值的更好方法是什么?

【问题讨论】:

  • 我在这里看不到任何会产生NaN的东西。请发布导致此问题的实际代码。
  • 你是对的,没有任何东西会导致 NaN。我的函数被乱序调用...

标签: javascript jquery parameter-passing


【解决方案1】:

索引可能被解释为字符串而不是整数。你从哪里得到NaN?对于index

您可以尝试显式返回一个整数,并且您可能想要测试您的瞬态变量(blahtest)以确保它们存在:

my.SetTablepagerIndex = function() {
    var pagerIndex = -1;
    var blah = $("#currentPage").text();
    if (!blah) {
         return pagerIndex;
    }
    var test = blah.indexOf("o");
    if (!test) {
         return pagerIndex;
    }
    var trimmedString = $.trim(blah.substring(4, test));
    if (!trimmedString) {
         return pagerIndex;
    }

    //convert potential string into an integer
    return +trimmedString;
}

【讨论】:

    【解决方案2】:

    您正在返回一个字符串,但我怀疑您将返回值用作数字。如果您尝试将值用作数字,但它不是数字,您将得到 NaN 结果。

    您的问题很可能是子字符串有点偏离。尝试稍微调整子字符串数字。如果您提供预期的输入字符串$("#currentPage").text(),我可以在那里提供一些帮助。

    【讨论】:

      【解决方案3】:

      实际问题是我的函数被乱序调用。 setTablepagerIndex 在创建寻呼机的表之前被调用...

      【讨论】:

        猜你喜欢
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 2021-05-10
        • 2012-09-08
        • 1970-01-01
        相关资源
        最近更新 更多