Problem zmiennych w funkcji

0

Witam.
Chciałbym zadeklarować zmienne globalnie. Lecz gdy deklaruje je po za funkcja nie działają one w funkcji. Jak to naprawić albo co można zmienić? :/

function confirm(){
    let ah = document.getElementById("ah").value;
    let al = document.getElementById("al").value;
    let bh = document.getElementById("bh").value;
    let bl = document.getElementById("bl").value;
    let ch = document.getElementById("ch").value;
    let cl = document.getElementById("cl").value;
    let dh = document.getElementById("dh").value;
    let dl = document.getElementById("dl").value;
    
    const letters =/^[a-f,0-9]+$/i;
    //AX AL AH
    if(ah.match(letters) && al.match(letters))
 {
    document.getElementById("ax").value=ah+al;
 }
 else if(ah.match(letters))
 {
    document.getElementById("ax").value=ah+"00";  
 }
 else if(al.match(letters))
 {
    document.getElementById("ax").value="00"+al;
 }
 else
 {
    document.getElementById("ax").value="0000"; 
 }

![(https://zapodaj.net/8256fd19fbfef.png.html)]

0
Trol00311 napisał(a):

Witam.

gdy deklaruje je po za funkcja nie działają one w funkcji

Jak to nie działają?

function f() {
  alert(x);
}

x = 1;
f();
0

@Freja Draco: To co dałem powyżej nie działa. Jeżeli deklaruje te zmienne ah, al.. itp. przed funkcją to one w w funkcji nie działają ;)

0

Podejrzewam, że próbujesz łapać elementy drzewa DOM zanim one zostaną zadeklarowane. Zatem dodaj swój kod na samym końcu strony, albo przypisz jego wywołanie do zdarzenia DOMContentLoaded
https://flaviocopes.com/dom-ready/

Jeśli źle zgaduję, co tam nie trybi, to pokaż cały kod razem ze stroną, na której go zamieszczasz.

0

Dobra, chyba wiem, z czym masz problem.

Nie chodzi o to, czy w funkcji czy poza funkcją, tylko o to, że o ile możesz stworzyć zmienną / uchwyt do obiektu:

let oah = document.getElementById("ah");

o tyle przypisanie:

let ah = document.getElementById("ah").value;

przypisuje zmiennej ah aktualną wartość elementu i ta wartość nie będzie się aktualizować wraz ze zmianami w samym obiekcie.

Możesz zatem zadeklarować sobie jednorazowo:

let oah = document.getElementById("ah");

a później wielokrotnie odczytywać z niego aktualną wartość:

let ah = oah.value;

1 użytkowników online, w tym zalogowanych: 0, gości: 1