Apache Cordova 应用程序 - 使用 Javascript innerHTML 更新内容

Apache Cordova App - update content using Javascript innerHTML

我是第一次在 Visual Studio 2015 Enterprise 上使用 Apache Cordova 创建应用程序。

该应用程序是一个简单的时间表检查器,用户可以根据全名和出生日期登录,然后显示他们的正确时间表。

我正在使用 innerHTML 更改索引页面(准确地说是 div displayDiv)以对应变量,因此 0 = 登录页面,1 = 显示期间页面,2 = 显示完整时刻表页面

问题是我无法理解变量 i 是如何在每次更改 innerHTML 时不断初始化的。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>TimetableTest1</title>
</head>
<body>
    <script src="scripts/platformOverrides.js"></script>
    <script src="scripts/index.js"></script> 
    <script src="scripts/validateUser.js"></script>

    <div id="displayDiv"></div>

<script type="text/javascript">

    function changeContent(func) {
        var oldOnLoad = window.onload;
        if (typeof window.onload != 'function') { 
            window.onload = func
        } else {
            window.onload = function (i) {
                oldOnLoad(i);
                func(); 
            }
        }
    }

    changeContent(function(){

        var i; 

        if (i == undefined && window.onload!='function') {
            i = 0; 
        }
        var display = new Array();

        display[0] = '<h2>VCB TIMETABLE APP</h2><h3>Please enter your full name and date of birth to find out where your next class is</h3><form name="myForm" onsubmit="validateForm();"><input type="text" maxlength="35" id="name"placeholder="Full name" /><br /><input type="text" maxlength="35" id="dob"placeholder="DD/MM/YYYY" /><br /><input type="submit" id="submit" name="submit" value="Log me in!" /><br /><input type="reset" name="Reset" /></form>'
        display[1] = '<h2>Where do I go?</h2>'
        display[2] = '<h2>Your full timetable</h2>'

        displayDiv.innerHTML = display[i];

        alert("changeContent final i = " + i);

    });

 </script>

</body>
</html>

validateUser.js

function validateForm() {
    var nameStr = document.getElementById("name").value;
    var dobStr = document.getElementById("dob").value;
    if (nameStr == null || nameStr == "" || dobStr == null || dobStr == "") {

        alert("Name and DOB must be filled in");

    } else {
        i = 1;
        validateUser(nameStr, dobStr, i)
    }
}

function validateUser(nameStr, dobStr, i) {

    nameStr = nameStr.toUpperCase();

        alert("Hello " + nameStr + "\n validateUser content i: " + i);

任何帮助将不胜感激

谢谢

清纶

您应该将声明 var i; 移到函数之外。

在您的代码中,每次执行更改内容的函数时,都会声明 i 但未初始化,因此其值为 undefined

因此,条件 i == undefined 将为真。

我找到了解决办法!

提交按钮有问题...

我将其更改为 "button" 并使用 onclick

简单地调用了 validateForm()