Loading...
ickata2112 avatar ickata2112 12 Точки

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;
    }

 

2
JavaScript Advanced
ickata2112 avatar ickata2112 12 Точки

Ах, за тея подробности не се бях сетил, получи се, Благодаря ви!

0
martinski avatar martinski 66 Точки

Наистина ли с тези варианти ти тръгна ,защото аз като ги пробвах ,не става ?

0
ickata2112 avatar ickata2112 12 Точки

Да, с първия събмитнах аз и като видях, че се получи не съм пробвал с другите, но сега забелязах, че на втория пример имам грешка, защото се помъчих без jQuery да я реша, но функцията document.getElementById изисква само името на id-то, а по условие ти дават queryselector т.е. с '#' пред името и не знам така дали ще хване елементите, не съм пробвал да видя, ако искаш може да я поправиш и да видиш ще се получи ли.

0
Innos avatar Innos 419 Точки

Няма да можеш да го вземеш с document.getElementyId, но JS ти предлагава вграденият метод document.querySelector който работи точно със селектор.

0
ickata2112 avatar ickata2112 12 Точки

Да, аз точно това имах на идея да ползвам, но съм го объкал. Иначе ако ти се играе повече може просто да изрежеш първия символ от всеки селектор и пак да си използваш getElementById.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.