我的 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/