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

JS - Zmienna nie jest globalna?

Object Storage Arubacloud
0 głosów
264 wizyt
pytanie zadane 9 lipca 2020 w JavaScript przez Bakkit Dyskutant (7,600 p.)
edycja 9 lipca 2020 przez Bakkit

Witam, mam o to taki kod:

var variable;

function funkcja() {
    const zmienna1 = $(".div1"+variable).value;
    const zmienna2 = $(".div2"+variable).value;
    const zmienna3 = $(".div3"+variable).value;
    console.log("zmienna1: "+zmienna1);
    console.log("zmienna2: "+zmienna2);
    console.log("zmienna3: "+Zmienna3);
}

$(".btn").click(function() {
    variable = this.dataset.target;
    console.log(variable);
    funkcja();
});

W skrócie: Po kliknięciu w button zmienna variable "dostaje wartość". Pod tym nadaniem wartości jest console.log, który zwraca poprawną wartość tej zmiennej. Natomiast w funkcji "funkcja" ta sama zmienna już zwraca wartość undefined. Proszę o pomoc.

 

@Edit: Dobra, faktycznie sprawdziłem jeszcze raz i to $(".div3"+variable).value zwracało undefined, a nie samo variable. Mój błąd. Natomiast dalej nie rozumiem dlaczego zwraca wartość undefined skoro pod .div1, .div2, .div3 kryje się textarea wraz z tekstem.

 

Kod html:

<textarea class="div1#item'"> Lorem ipsum </textarea>

"div1#item" to ta zespolona klasa ("#" to początek "variable").

console.log("div1"+variable) = div1#item

1
komentarz 9 lipca 2020 przez ScriptyChris Mędrzec (190,190 p.)

Natomiast w funkcji "funkcja" ta sama zmienna już zwraca wartość undefined.

Po czym stwierdzasz, że zmienna variable w funkcji funkcja ma wartość undefined?

komentarz 9 lipca 2020 przez Bakkit Dyskutant (7,600 p.)
Nie ma tego w kodzie, ale jak dodałem console.log(variable), zwróciła się wartość undefined.
1
komentarz 9 lipca 2020 przez ScriptyChris Mędrzec (190,190 p.)
Czy możesz pokazać kod HTML, żeby można było przetestować całość?
komentarz 9 lipca 2020 przez Bakkit Dyskutant (7,600 p.)
Zaktualizowałem pytanie.
1
komentarz 9 lipca 2020 przez ScriptyChris Mędrzec (190,190 p.)

Natomiast dalej nie rozumiem dlaczego zwraca wartość undefined skoro pod .div1, .div2, .div3 kryje się textarea wraz z tekstem.

A czy te elementy pasują do selektorów, które są sklejone ze zmiennej variable

komentarz 9 lipca 2020 przez Bakkit Dyskutant (7,600 p.)
Tak, sprawdzone w konsoli. Wszystko się zgadza z console.log
1
komentarz 9 lipca 2020 przez ScriptyChris Mędrzec (190,190 p.)

To pokaż kod HTML pierwszego z tych elementów oraz pokaż wynik wywołania console.log('.div1' + variable).

komentarz 9 lipca 2020 przez Bakkit Dyskutant (7,600 p.)
Dodałem.

1 odpowiedź

+1 głos
odpowiedź 9 lipca 2020 przez Comandeer Guru (603,480 p.)
wybrane 9 lipca 2020 przez Bakkit
 
Najlepsza

A czemu robisz to w taki sposób, zamiast po prostu przekazać this.dataset.target bezpośrednio do funkcja, jako parametr?

Co do problemu: na pewno to variable jest undefined, czy może selektory są tworzone niepoprawnie?

komentarz 9 lipca 2020 przez Bakkit Dyskutant (7,600 p.)
Dodałem kod.
1
komentarz 9 lipca 2020 przez Comandeer Guru (603,480 p.)

Inna rzecz, że selektor .div1#item zostanie zinterpretowany jako element o klasie .div1 i identyfikatorze #item. Musiałbyś to przepuścić przez CSS.escape.

komentarz 9 lipca 2020 przez Bakkit Dyskutant (7,600 p.)
A czy istnieje funkcja, która zapisze do zmiennej wartość czegoś pomijając pierwszy znak? Dajmy na to: var imie = "Marzena"; var imieSkrocone = funkcja(imie), w tej drugiej zapisałoby się "arzena", bez pierwszej litery.
komentarz 9 lipca 2020 przez Bakkit Dyskutant (7,600 p.)
Wszystko ładnie działa. Błąd był właśnie w tym hashu. Nie miałem pojęcia, że js potraktuje to jako osobny identyfikator. Dzięki wielkie.

Podobne pytania

0 głosów
1 odpowiedź 450 wizyt
pytanie zadane 25 października 2018 w JavaScript przez Michał Samolewski Bywalec (2,240 p.)
+1 głos
4 odpowiedzi 817 wizyt
pytanie zadane 10 września 2021 w Python przez Hajpa Użytkownik (910 p.)
0 głosów
2 odpowiedzi 348 wizyt
pytanie zadane 5 października 2017 w JavaScript przez szustka124 Gaduła (4,380 p.)

92,757 zapytań

141,677 odpowiedzi

320,429 komentarzy

62,101 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

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!

...