Здравствуйте. Разбираюсь с функциями-конструкторами на Javascript.
Пишу небольшое приложение, которое просит ввести перевод.
Конструктор function SpellingTask(task, correct){} принимает два параметра - массивы task, correct.
Метод .ask() создает элементы формы, лейбла, кнопок и прикрепляет к body
Еще этот метод вызывает другой метод - .check(), который и должен проверять правильность введенного ответа.
Но не работает почему-то.Консоль Гугл Хрома выдает ошибку
Uncaught TypeError: this.check is not a function
at HTMLButtonElement. (spellingClass.html:43)
function SpellingTask(task, correct){
this.counter = 0;
this.task = task;
this.correct = correct;
this.userAnswer = "";
this.check = function(){
if(this.userAnswer === this.correct[this.counter]){
console.log("Молодец");
this.counter++;
if(this.counter >= this.task.length){
console.log("На этом спеллинг закончен. Тут можно вызвать другую функцию");
}else{
this.ask();
}
}else{
this.ask();
}
};
this.ask = function(){
/*userAnswer = prompt("Напиши перевод слова '" + taskSpellingTask[taskSpellingCounter] + "'");*/
var inputDiv = document.createElement("div");
inputDiv.setAttribute("id", "inputDiv");
var label = document.createElement("label");
label.setAttribute("for", "inp");
label.textContent = "Напиши перевод слова '" + this.task[this.counter] + "'";
var input = document.createElement("input");
input.setAttribute("id", "inp");
var submit = document.createElement("button");
submit.textContent = "Проверить";
submit.addEventListener("click", function(){
this.userAnswer = input.value;
document.body.removeChild(inputDiv);
this.check();
});
inputDiv.appendChild(label);
inputDiv.appendChild(input);
inputDiv.appendChild(submit);
document.body.appendChild(inputDiv);
tasks = [];
tasks.push(new SpellingTask(['привет', 'до свидания'],['hello','good bye']))
var task1 = new SpellingTask(['привет', 'до свидания'],['hello','good bye'])