0

コンストラクタ プロパティの作成に問題があります。firebug コンソールでは、エラーは"telekomApp.validation.run is not a function". 関数はコンストラクターのプロパティである必要があり、それも同様に機能することを期待していますがthis.run()、そうではありません。TelekomApptelekomApp.validation.run()

これについていくつか光を当てることができますか?

どうもありがとう

JS:

(function(global) {

var TelekomApp = function() {

    this.validation = function() {

        var userNameField = document.getElementById("username-field"),
            passwordField = document.getElementById("password-field"),
            usernameMsg = document.getElementById("username-msg"),
            passwordMsg = document.getElementById("password-msg");

        this.run = function(tag) { // this method doesn't work...
            var o = this;
        };
      };
  };

  // make global
  global.TelekomApp = TelekomApp;

  // instanciate
  var telekomApp = new TelekomApp;

  // initialise validation...
  telekomApp.validation.run(document.getElementById("login-form"));

}(window));

HTML:

<div id="login">
        <p id="message"></p>
        <form id="login-form" action="#" method="post">
            <fieldset>
                <legend>Please login using your username and password</legend>
                <ol>
                    <li>
                        <label for="username-field">Username <span>*</span></label>
                        <input type="text" id="username-field" placeholder="Type your username" />
                        <span id="username-msg"></span>
                    </li>

                    <li>
                        <label for="password-field">Password <span>*</span></label>
                        <input type="password" id="password-field" placeholder="Type your password" />
                        <span id="password-msg"></span>
                    </li>

                    <li id="button">
                        <input type="submit" id="login-btn" value="Log In" />
                    </li>
                </ol>

            </fieldset>
        </form>
    </div>
4

2 に答える 2

3
(function(global) {

var Validation = function() { //constructor for Validation

        var userNameField = document.getElementById("username-field"),
            passwordField = document.getElementById("password-field"),
            usernameMsg = document.getElementById("username-msg"),
            passwordMsg = document.getElementById("password-msg");

        this.run = function(tag) { // this method doesn't work...
            var o = this;
        };
};

var TelekomApp = function() {

    this.validation = new Validation();
  };

  // make global
  global.TelekomApp = TelekomApp;

  // instanciate
  var telekomApp = new TelekomApp;

  // initialise validation...
  telekomApp.validation.run(document.getElementById("login-form"));

}(window));
于 2013-03-13T17:26:06.810 に答える
1

telekomApp.validation.runtelekomApp.validationが呼び出されたときにオブジェクトに追加されます。

this.validation = function() {関数をオブジェクトに追加しますが、呼び出しません。さらに、 ではなく に直接this.run = function(tag) {追加します。小さな変更は次のようになります。runtelekomApptelekomApp.validation

var Validation = function() {
  ...// your code here
}
this.validation = new Validation();
于 2013-03-13T17:32:01.657 に答える