我正在尝试制作一个能够导出以前选择的名称列表(按值排序)的Web应用程序。一切正常,除了我的变量在for循环之一中不起作用。
我已经尝试过修改一堆代码。试图用很多东西来代替变量,例如以其他方式构造数组,试图用return
的{{1}}来获取我想要的数字,但效果不佳。
简而言之:
这有效:
getExportCount()
这不是:
for (var i = 0; i < 3; i++) {
if (wstv[i].toExport == true) {
console.log(wstv[i]);
exportList.push(wstv[i]);
}
}
完整的(ish)代码如下所示:
for (var i = 0; i < exportNum; i++) {
if (wstv[i].toExport == true) {
console.log(wstv[i]);
exportList.push(wstv[i]);
}
}
可以在JSFiddle上找到“工作”示例(从上面)。我希望我的代码执行与现在完全相同的操作,但是使用变量而不是“ 3”。
有人可以告诉我我在这里俯瞰什么吗?
编辑: 首先感谢您的所有帮助! 正如评论中指出的,我将逻辑更改为:
var exportNum;
function getExportCount() {
var toExportCount = -1;
for (var k = 0; k < wstv.length; k++) {
if (wstv[k].toExport == true) {
toExportCount += 1;
}
}
toExportCount = exportNum;
}
function exporter() {
getExportCount();
var exportList = [];
for (var i = 0; i < exportNum; i++) {
if (wstv[i].toExport == true) {
exportList.push(wstv[i]);
}
}
var exportListSort = exportList.sort(function (a, b) {
return a.value - b.value
});
for (var j = 0; j < exportList.length; j++) {
if (exportListSort[j] != undefined) {
$("body").append("<p>" + exportListSort[j].longName + "</p>")
} else {
console.log("Error");
}
}
return "Export successfull"
}
我还将JSFiddle更新为实际工作版本。
答案 0 :(得分:4)
您永远不会将exportNum
分配给值。我猜想您在getExportCount
函数中交换了变量,最后一行应该是:
exportNum = toExportCount;
虽然将此值分配给exporter
中的局部变量而不使用全局变量会更干净,但是当另一个函数更改它时,您将避免错误