For Loop拒绝循环;手动运行时效果非常好

时间:2016-01-16 17:57:39

标签: javascript arrays cordova for-loop

好吧,所以,希望这是一个简单的问题。我确信它必须是简单而愚蠢的,我做得不对。我正在构建一个应用程序来编写我的练习例程,这样我就可以每周跟踪它(并使用Cordova学习应用程序开发)。在代码中,每次我回到exersetup屏幕时,我想要读取保存的练习文件,将其解析回一个对象数组,将这些对象转换回练习对象,然后在屏幕上显示它们。我有一个循环,应该检查数组的每个元素来处理信息,然后显示,然后重复,直到它为数组中的每个元素完成此操作。它对第一个项目完全正常,然后停止。如果我多次手动运行循环,它将完美运行。未列出的是函数addRow()的代码,它只是为输入添加了一行格式化的下拉选择器,然后递增rowNum以跟踪它正在操作的行。您可以提供的任何帮助表示赞赏。如果我需要提交更多信息,我很乐意这样做。这是有问题的循环:

编辑:修正了以下评论中的建议。代码仍然起作用。在首次循环中完美运行,然后停止。如果我继续手动运行循环(在控制台中一遍又一遍地声明它)它可以正常工作,但由于某种原因,它不会运行" for"环。我还包括for循环嵌套的函数的其余部分,如果有帮助的话。

function readRout() 
    {
        console.log("Reading routine...");
        document.addEventListener('deviceready', getFile, false);
        function getFile()
            {
                window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function(dir) 
                    {
                        console.log("got main dir",dir);
                        dir.getFile("exerciseroutine.txt", {create:true}, function(file) 
                            {
                                console.log("got the file", file);
                                exerLog = file;
                                console.log(exerLog);
                            });
                    });
                document.addEventListener('deviceready', logOut,  false);
            }
        function logOut() 
            {
                setTimeout(readLog, 50);
            }
        function readLog()  
            {
                exerLog.file(function(file) 
                    {
                        var reader = new FileReader();
                        reader.onloadend = function(e) 
                            {
                                console.log(this.result);
                                exerRoutine = JSON.parse(this.result);
                                //console.log(exerRoutine);
                                //console.log(exerRoutine[0]);
                                var looper = exerRoutine.length + 1;
                                for (var i=0; i<looper; i++)
                                    {
                                        console.log("Loop count is: " + i);
                                        console.log(looper);
                                        exerRoutine[i] = new exercise(exerRoutine[i].type, exerRoutine[i].name, exerRoutine[i].sets, exerRoutine[i].reps, exerRoutine[i].pace);
                                        console.log(exerRoutine[i]);
                                        console.log(exerRoutine[i].description());
                                        console.log(exerRoutine[i].type);
                                        console.log(exerRoutine[i].name);
                                        console.log(exerRoutine[i].sets);
                                        console.log(exerRoutine[i].reps);
                                        console.log(exerRoutine[i].pace);
                                        addRow();
                                        setTimeout(fillExer, 50);
                                        console.log(exerRoutine);           
                                    }
                                console.log(looper);

                            };
                        reader.readAsText(file);
                    }, fail);
            }
        function fillExer() 
            {
                var typeRow = "typeSel" + rowNum;
                console.log(typeRow);
                console.log(document.getElementById(typeRow));
                var nameRow = "nameSel" + rowNum;
                var setsRow = "setsSel" + rowNum;
                var repsRow = "repsSel" + rowNum;
                var paceRow = "paceSel" + rowNum;
                fillType(typeRow);
                setTimeout(fillName, 10, nameRow);
                fillSets(setsRow);
                fillReps(repsRow);
                fillPace(paceRow);
            }
            function fillType(typek)
                {
                    for (var k=0; k<document.getElementById(typek).options.length; k++)
                        {
                            //console.log(document.getElementById(typek).options.length);
                            console.log(exerRoutine[rowNum-1].type);
                            if(document.getElementById(typek).options[k].value == exerRoutine[rowNum-1].type)
                                {
                                    document.getElementById(typek).selectedIndex = k;
                                    //console.log(document.getElementById(typei).selectedIndex);
                                    var quer = "#" + typek;
                                    //console.log(query);
                                    var typeInput = document.querySelector(quer);
                                    //console.log(typeInput);
                                    TypeSelect(typeInput);
                                    return;
                                }
                        }
                }
            function fillName(namek) 
                {
                    for (var k=0; k<document.getElementById(namek).options.length; k++)
                        {
                            //console.log(document.getElementById(namek).options.length);
                            console.log(exerRoutine[rowNum-1].name);
                            if(document.getElementById(namek).options[k].value === exerRoutine[rowNum-1].name)
                                {
                                    document.getElementById(namek).selectedIndex = k;
                                    //console.log(document.getElementById(namei).selectedIndex);
                                    return;
                                }
                        }
                }
            function fillSets(setsk)
                {
                    for (var k=0; k<document.getElementById(setsk).options.length; k++)
                        {
                            console.log(exerRoutine[rowNum-1].sets);
                            if(document.getElementById(setsk).options[k].value === exerRoutine[rowNum-1].sets)
                                {
                                    document.getElementById(setsk).selectedIndex = k;
                                    //console.log(document.getElementById(setsk).selectedIndex);
                                    return;
                                }
                        }
                }
            function fillReps(repsk)
                {
                    for (var k=0; k<document.getElementById(repsk).options.length; k++)
                        {
                            console.log(exerRoutine[rowNum-1].reps);
                            if(document.getElementById(repsk).options[k].value === exerRoutine[rowNum-1].reps)
                                {
                                    document.getElementById(repsk).selectedIndex = k;
                                    //console.log(document.getElementById(repsi).selectedIndex);
                                    return;
                                }
                        }
                }
            function fillPace(pacek)
                {
                    for (var k=0; k<document.getElementById(pacek).options.length; k++)
                        {
                            console.log(exerRoutine[rowNum-1].pace);
                            if(document.getElementById(pacek).options[k].value === exerRoutine[rowNum-1].pace)
                                {
                                    document.getElementById(pacek).selectedIndex = k;
                                    //console.log(document.getElementById(pacek).selectedIndex);
                                    return;
                                }
                        }       
                }
    }

0 个答案:

没有答案