Использование полей объекта в JS? Доброго времени суток, при изучении и углублении в JS решил написать калькулятор, правда не очень сложный, но все же и столкнулся с проблемой: Uncaught ReferenceError: inputData is not defined.// The main JS File
'use strict';
var action = {
add: function(a, b) {
return a + b;
},
substract: function(a, b){
return a - b;
},
multiply: function(a, b){
return a * b;
},
devide: function(a, b) {
return a / b;
}
}
var tablo = {
statusLine: " ",
tabloHtml: document.getElementById("calculator-result"),
show: function(){
tabloHtml.innerHTML = statusLine;
},
setLine: function(str){
statusLine = str;
this.show();
},
}
var calculator = {
calc_action: action,
calc_tablo: tablo,
inputData: 0,
action: [],
digit: [],
addToData: function(value){
this.inputData += parseFloat(value);
this.calc_tablo.setLine(inputData);
this.logArray("Add to Data:");
},
addData: function(value){
this.inputData = parseFloat(value);
this.calc_tablo.setLine(inputData);
this.logArray("Add Data:");
},
clearData: function(){
this.inputData = 0;
},
logArray: function(str){
console.log(str);
console.log(this.action);
console.log(this.digit);
},
}
// Listen Digit button
var listen = function (){
var buttonName = this.getAttribute("class");
calculator.addToData(this.innerHTML);
}
window.onload = function(){
var buttons = document.querySelectorAll('button')
for (var i = 0; i

21 Авг 2019 в 07:05
249 +1
0
Ответы
1

Ошибка "Uncaught ReferenceError: inputData is not defined" возникает потому, что внутри функции addToData вы обращаетесь к переменной inputData, не указывая явно, что это поле объекта calculator.

Чтобы исправить эту ошибку, вам нужно использовать ключевое слово this, чтобы указать, что inputData является полем объекта calculator. Вместо inputData используйте this.inputData.

Пример исправленного кода:

addToData: function(value){
this.inputData += parseFloat(value);
this.calc_tablo.setLine(this.inputData);
this.logArray("Add to Data:");
},
addData: function(value){
this.inputData = parseFloat(value);
this.calc_tablo.setLine(this.inputData);
this.logArray("Add Data:");
},

Также, в функции addData, учитывайте, что вы должны указывать this.inputData, а не просто inputData.

После внесения этих изменений, ошибка должна исчезнуть, и код должен работать правильно.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир