导致 NaN 的 JavaScript 整数

标签 javascript variable-types

我的 JavaScript 基本上如下所示

function a() {
    b(1);
}

function b(myNumber) {
    c(myNumber);
}

function c(myNumber) {
    var calculation = 5 * (myNumber - 1);
    alert(calculation);
}

当我调用函数 a() 时,警告框最终显示“NaN”。为什么会这样?我已经尝试在许多地方使用 parseInt() 函数,但似乎没有任何效果。

编辑

完整代码(实际完成的而不是精简的示例):

function updateTablePagination(tableId, rowsPerPageSelectId) {
    updateTablePagination(tableId, rowsPerPageSelectId, 1);
}

function updateTablePagination(tableId, rowsPerPageSelectId, pageNumber) {
    var table = document.getElementById(tableId);
    var rowsPerPageSelect = document.getElementById(rowsPerPageSelectId);
    var rowsPerPage = rowsPerPageSelect.options[rowsPerPageSelect.selectedIndex].text;

    updateTable(table, rowsPerPage, pageNumber);
    //updateTablePageLinks();
}

function updateTable(table, rowsPerPage, pageNumber) {
    var tableRows = table.getElementsByTagName("tr");
    var totalNumberOfRows = tableRows.length;

    var startRow = rowsPerPage * (pageNumber - 1);      
     var endRow = Math.min(startRow + rowsPerPage, totalNumberOfRows - 1);

    alert("Start: " + startRow + "\nEnd: " + endRow);
}

选择框有一个 onchange 调用 updateTablePagination('myTableId', 'rowsPerPage')。这些 ID 都是正确的。

“开始”和“结束”均为 NaN。

编辑2

或者,如果我只是执行 alert(pageNumber),它是未定义的。

简化

即使这样说 pageNumber 是未定义的:

function updateTablePagination(tableId, rowsPerPageSelectId) {
    updateTablePagination(tableId, rowsPerPageSelectId, 1);
}

function updateTablePagination(tableId, rowsPerPageSelectId, pageNumber) {
    alert(pageNumber);
}

最佳答案

您有两个名为 updateTablePagination 的函数。 Javascript 不支持函数重载。摆脱第一个声明,因为它正在被第二个声明覆盖。您可以使用 || 为参数定义默认值。

function updateTablePagination(tableId, rowsPerPageSelectId, pageNumber) {
    pageNumber = pageNumber || 1; //Set a default value for pageNumber
    var table = document.getElementById(tableId);
    var rowsPerPageSelect = document.getElementById(rowsPerPageSelectId);
    var rowsPerPage = rowsPerPageSelect.options[rowsPerPageSelect.selectedIndex].text;

    updateTable(table, rowsPerPage, pageNumber);
    //updateTablePageLinks();
}


updateTablePagination(tableId, rowsPerPageSelectId) //Will call the function with pageNumber == 1

关于导致 NaN 的 JavaScript 整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7259347/

相关文章:

javascript - 当 success 函数为 clld 时,如何动态滚动 ol 到底部?

java - 如何强制 Java 接受方法调用的参数之一的条件类型?

javascript - jQuery.ajax 调用在 Chrome 扩展中失败

javascript - Highcharts 列 : add dynamically series with drilldown data

c# - 文本框是否将全数字文本保存为长文本或字符串?

mysql - 将类型为 "bit"的 MySQL 字段添加到 FuelPHP 模型中

转置数据帧后 R 变量类型发生变化

javascript - 如何将本地文件定义为 DOM 对象?

javascript - 如何在我的js数据文件更改时刷新页面