javascript - 如何解决“未定义的错误 "Uncaught TypeError: Cannot call method 'changePage”

标签 javascript jquery html eclipse cordova

我只是phonegap和javascript的初学者,因此在制作一个简单的应用程序时,我在index.html头中编写了以下代码,并且在运行代码时我的main.js文件没有被包含在内。我希望有人能帮我解决这个问题。

    <!DOCTYPE HTML>
    <html>
        <head>
            <meta name="viewport" content="width=320; user-scalable=no" />
            <meta http-equiv="Content-type" content="text/html; charset=utf-8">
            <title>Auth Demo</title>
            <link rel="stylesheet" href="jquery.mobile/jquery.mobile-1.0rc2.css" type="text/css" charset="utf-8" />
            <script type="text/javascript" src="js/jquery-1.7.min.js"></script>
            <script type="text/javascript" charset="utf-8" src="cordova-2.7.0.js"></script>
            <script src="jquery.mobile/jquery.mobile-1.0rc2.js"></script>
            <script type="text/javascript" charset="utf-8" src="assests/www/main.js"></script>
        </head>

        <body onload="init()">
            <div id="loginPage" data-role="page">
            <div data-role="header">
                <h1>Welcome to Phonegap</h1>
            </div>  
            <div data-role="content"> 
                <form id="loginForm">
                    <div data-role="fieldcontain" class="ui-hide-label">
                        <label for="username">Username:</label>
                        <input type="text" name="username" id="username" value="" placeholder="Username" />
                    </div>
                    <div data-role="fieldcontain" class="ui-hide-label">
                        <label for="password">Password:</label>
                        <input type="password" name="password" id="password" value=""    placeholder="Password" />
                    </div>
                   <input type="submit" value="Login" id="submitButton">
                </form>

            </div>

            <script>
                $("#loginPage").live("pageinit", function(e) {
                   checkPreAuth();
                });
            </script>
        </body>
    </html>

这也是 main.js 文件代码。我只希望特定的登录 ID 有效。

   function init() {
   document.addEventListener("deviceready", deviceReady, true);
   delete init;
 }

  function checkPreAuth() {
   console.log("checkPreAuth");
 var form = $("#loginForm");
  if(window.localStorage["username"] != undefined && window.localStorage["password"] !=    undefined) {
    $("#username", form).val(window.localStorage["username"]);
    $("#password", form).val(window.localStorage["password"]);
     navigator.notification.alert("You entered a username and password");
     handleLogin();
    }
    }

     function handleLogin() {
   var form = $("#loginForm");    
    //disable the button so we can't resubmit while we wait
     $("#submitButton",form).attr("disabled","disabled");
     var u = $("#username", form).val();
    var p = $("#password", form).val();
   var str1 = "burden123";
   var str2 = "game1234";

  var n1 = str1.localeCompare(u);
    var n2 = str1.localeCompare(p);
if(u != '' && p!= '') {
    $.post("http://www.coldfusionjedi.com/demos/2011/nov/10/service.cfc?  method=login&returnformat=json", {username:u,password:p}, function(res) {
        if(n1==0 && n2==0) {
                 $.mobile.changePage("some.html");
            } else {
            navigator.notification.alert("Your login failed", function() {});
        }
        $("#submitButton").removeAttr("disabled");
    },"json");
  } else {
    navigator.notification.alert("You must enter a username and password", function()  {});
    $("#submitButton").removeAttr("disabled");
 }
  return false;
}

   function deviceReady() {
  console.log("deviceReady");
$("#loginPage").on("pageinit",function() {
    console.log("pageinit run");
    $("#loginForm").on("submit",handleLogin);
    checkPreAuth();
});
$.mobile.changePage("#loginPage");
   }

最佳答案

<script type="text/javascript" charset="utf-8" src="assests/www/main.js"></script>

代码中的这一行应更改为

<script type="text/javascript" charset="utf-8" src="main.js"></script>

因为主要js位于index.html页面的同一文件夹中。

关于javascript - 如何解决“未定义的错误 "Uncaught TypeError: Cannot call method 'changePage”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23904034/

相关文章:

jquery - 从 js.erb 文件中注入(inject) form_for @model?

javascript - 这个 javascript ajax 代码有什么问题?

PHP登录表单错误未定义索引: active

python - Flask - 为我的外部 .css 文件获取 304 状态

html - HTML5 WebStorage 数据是如何物理存储的?

javascript - 列出 Nodejs 中的所有 strip 费用

javascript - 如何通过ajax将隐藏字段值传递给codeigniter Controller

javascript - 在 Canvas 上绘制特定区域

javascript - ReactDOM.render() 不工作 - 您可能需要合适的加载器来处理此文件类型

javascript - 为什么 javascript 中的对象字面量会保存不必要的 DOM 引用?