• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[webpack] problem z deklaracją zmiennej

Object Storage Arubacloud
0 głosów
191 wizyt
pytanie zadane 22 czerwca 2019 w JavaScript przez 42savage Bywalec (2,630 p.)
edycja 22 czerwca 2019 przez 42savage

Witam, to znowu ja.

Tym razem próbowałem projekt galerii zdjęć wdrożyć w życie, korzystam z webpacka i gdy poustawiałem wszystko pod projekt jedna z funkcji w galerii nie działa poprawnie.

Dostaje taki błąd

Podrzucam link do repozytorium, żeby łatwiej można było zdebugować błąd.

Ja sam nie mam pojęcia jak nawet mogę wygooglować ten błąd.

https://github.com/42savage/amgar-files

1 odpowiedź

+1 głos
odpowiedź 22 czerwca 2019 przez adrian17 Ekspert (344,860 p.)

Na oko:

https://github.com/42savage/amgar-files/blob/master/src/imageGallery.js#L16

style = img.currentStyle || window.getComputedStyle(img, false),

Nie widzę nigdzie deklaracji tej zmiennej.

komentarz 22 czerwca 2019 przez 42savage Bywalec (2,630 p.)

Póki co zmieniłem deklarowanie tych zmiennych i dodałem przed var

PRZED:

    function getSource(element){
        let img = element;
        style = img.currentStyle || window.getComputedStyle(img, false),
        backgroundImage = style.backgroundImage.slice(34, -1).replace(/"/g, "");
        console.log(backgroundImage)
    }

 

PO:

    function getSource(element){
        let img = element;
        var style = img.currentStyle || window.getComputedStyle(img, false);
        var backgroundImage = style.backgroundImage.slice(34, -1).replace(/"/g, "");
        console.log(backgroundImage)
    }

w konsoli dostaje ścieżke do zdjęcia,

zaraz niżej pojawia się  komunikat

Uncaught ReferenceError: backgroundImage is not defined

to znaczy, że dalej potrzebny jest return?

komentarz 22 czerwca 2019 przez ScriptyChris Mędrzec (190,190 p.)

Zmienna backgroundImage jest używana w funkcji createImage. Albo więc przekaż ją tam (czyli musisz zwrócić backgroundImage z funkcji getSource)albo zadeklaruj tą zmienną na górze skryptu (o czym wspomniałem w poprzednim komentarzu).

komentarz 22 czerwca 2019 przez 42savage Bywalec (2,630 p.)

Poradziłem sobie w taki sposób, że zrobiłem 

takie coś

var storage = {}

do storage z funkcji getSrc wrzucam zmienna backgroundImage

        storage.backgroundImage = backgroundImage;

a w funkcji createContainer

        image.style.background = `url('images/${storage.backgroundImage}')`;

musiaem dodać "images/"

i teraz działa.

a z returnem nie wiem jak miałbym to zrobić, możecie mi to jakoś opisać, bo nie do końca ogarniam?

Miałbym po prostu napisać return nazwaZmiennej?

a potem jak miałbym się do tej zmiennej odwołać?

komentarz 22 czerwca 2019 przez ScriptyChris Mędrzec (190,190 p.)

a z returnem nie wiem jak miałbym to zrobić, możecie mi to jakoś opisać, bo nie do końca ogarniam?

function init(element){
    var backgroundImageValue = getSource(element);
    createImageContainer(element, backgroundImageValue);
}

function getSource(element){
    let img = element;
    var style = img.currentStyle || window.getComputedStyle(img, false),
    var backgroundImage = style.backgroundImage.slice(37, -1).replace(/"/g, ""); //"
    console.log(backgroundImage);

    return backgroundImage;
}

function createImageContainer(/* ??? */ element, backgroundImageParam){
    var imageContainer = document.createElement('div');
    imageContainer.className = "imageContainer";
    document.body.appendChild(imageContainer);
    createImage(imageContainer, backgroundImageParam);
    removeContainer(imageContainer);
}

function createImage(imageContainer, backgroundImage){
    /* kod w środku bez zmian */
}

P.S. Dlaczego funkcję createImageContainer wołasz z parametrem element, ale już w funkcji nie używasz tego jako argument (wpisałem tam znaki zapytania jako komentarz)?

komentarz 22 czerwca 2019 przez 42savage Bywalec (2,630 p.)
Szczerze mówiąc nie wiem, głupie niedopatrzenie.

Podobne pytania

+1 głos
0 odpowiedzi 495 wizyt
+2 głosów
1 odpowiedź 75 wizyt
0 głosów
1 odpowiedź 104 wizyt
pytanie zadane 13 lutego 2020 w JavaScript przez no_face Nowicjusz (200 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...