• 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
233 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 (601,930 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 (601,930 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ź 442 wizyt
pytanie zadane 25 października 2018 w JavaScript przez Michał Samolewski Bywalec (2,240 p.)
+1 głos
4 odpowiedzi 724 wizyt
pytanie zadane 10 września 2021 w Python przez Hajpa Użytkownik (910 p.)
0 głosów
2 odpowiedzi 308 wizyt
pytanie zadane 5 października 2017 w JavaScript przez szustka124 Gaduła (4,380 p.)

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 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!

...