2017-05-02 3 views
0

私はOOクイズアプリを開発しています。クイズアプリケーション自体をすべての質問などで起動するはずのクイズコンストラクタがあります。私がやりたいことは、ユーザーが自分の名前と電子メールを入力して送信ボタンをクリックしたときに、JSON文字列で名前、電子メールなどで新しい作成されたUserオブジェクトconsole.logを作成することです。私はクイズのプロトタイプメソッドclickBtnを与え、入力が空でないかどうかをチェックし、そうでなければJSON文字列を与えます。イベントリスナーにコンストラクタのメソッドを使用する方法

このメソッドの後、ボタンにイベントリスナーを追加し、ランダム関数ではなくprototype.clickBtnメソッドを与えました。残念ながら、私はUncaught ReferenceError: clickBtn is not definedエラーを取得し続ける。何が問題ですか?コードスニペット:

function Quiz (User, Question) { 
    this.user = User; 
    this.question = Question; 
} 

Quiz.prototype.constructor = Quiz; 

Quiz.prototype.clickBtn = function() { 
     if (theName.value == "") { 
     var message = document.createElement("p"); 
     message.className = "message"; 
     message.innerHTML = "You forgot the name and email"; 
     var body = document.getElementsByTagName("body")[0]; 
     body.appendChild(message); 
     } else { 
     var message = document.getElementsByClassName("message")[0]; // first one 
     message.parentNode.removeChild(message); 
     console.log(message); 
     var user1 = new User (theName.value, theEmail.value); 
     users.push(user1); 
     console.log("Quiz Created On: " + this.getQuizDate); 
     console.log(JSON.stringify(users, null, 2)); 
     } 
     theName.value = ""; 
     theEmail.value = ""; 
} 

var btn = document.getElementById("button"); 
btn.addEventListener("click", clickBtn); 
+2

? – adeneo

+0

質問が明確でない – Nirus

答えて

1

まず、クイズのインスタンスを作成します。

var quiz = new Quiz; 

その後、あなたのクイズオブジェクトのメソッドとしてイベントリスナーを追加します。特に方法は本当にも**新しい**インスタンスを作成せずに何もしないプロトタイピング以来、物事を行うには全く奇妙な方法である

btn.addEventListener("click", quiz.clickBtn); 
+0

なぜ新しいインスタンスを作成する必要があり、Quiz.clickBtnと言うことができないのですか?それは構文的に間違っていますか? – Limpuls

0

をアクセスclickBtnに、あなたはクイズメソッドのインスタンスでそれを呼び出すために必要があるので、あなたは現在あなたがclickBtnを使用している、クイズ方式のclickBtnメソッドを追加する必要がありますが、clickBtnはクイズの方法であり、

関連する問題