Lab: Object Composition - 05.Sum [Unexpected error: document is not defined]
Здравейте, имам проблем със следната задача от лекцията Object Composition, отнася се за 5-та задача, но ми дава грешка:
(Unexpected error: document is not defined), не можах да разбера къде е проблема изпробвах хиляди решения, мислех си, че проблема е, че не се зарежда DOM-a преди да select-не елементите чрез селекторите и се пробвах и със document.onload и с $(function(){...}), но не ми се получи, иначе ето и някои от кодовете, които съм ползвал:
function getModel() {
let model = {
init: (selector1, selector2, resultSelector) => {
model.num1 = $(selector1);
model.num2 = $(selector2);
model.result = $(resultSelector);
},
add: () => {
model.action((a, b) => a + b);
},
subtract: () => {
model.action((a, b) => a - b);
},
action: (operation) => {
let val1 = Number(model.val1.val());
let val2 = Number(model.val2.val());
model.result.val(operation(val1, val2));
}
};
return model;
}
(function () {
let num1, num2, result;
function init(num1Sel, num2Sel, resultSel) {
num1 = document.getElementById(num1Sel);
num2 = document.getElementById(num2Sel);
result = document.getElementById(resultSel);
}
function add() {
action((a, b) => a + b);
}
function subtract() {
action((a, b) => a - b);
}
function action(operation) {
let val1 = Number(num1.value);
let val2 = Number(num2.value);
result.value = operation(val1, val2);
}
let model = {init, add, subtract};
return model;
})();
function getModel() {
let model = {
num1,
num2,
result,
init: (selector1, selector2, resultSelector) => {
$(function () {
model.num1 = $(selector1);
model.num2 = $(selector2);
model.result = $(resultSelector);
});
},
add: () => {
model.action((a, b) => a + b);
},
subtract: () => {
model.action((a, b) => a - b);
},
action: (operation) => {
let val1 = Number(model.num1.val());
let val2 = Number(model.num2.val());
model.result.val(operation(val1, val2));
}
};
return model;
}
Наистина ли с тези варианти ти тръгна ,защото аз като ги пробвах ,не става ?
Да, с първия събмитнах аз и като видях, че се получи не съм пробвал с другите, но сега забелязах, че на втория пример имам грешка, защото се помъчих без jQuery да я реша, но функцията document.getElementById изисква само името на id-то, а по условие ти дават queryselector т.е. с '#' пред името и не знам така дали ще хване елементите, не съм пробвал да видя, ако искаш може да я поправиш и да видиш ще се получи ли.
Няма да можеш да го вземеш с document.getElementyId, но JS ти предлагава вграденият метод document.querySelector който работи точно със селектор.
Да, аз точно това имах на идея да ползвам, но съм го объкал. Иначе ако ти се играе повече може просто да изрежеш първия символ от всеки селектор и пак да си използваш getElementById.