Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]if, uproszczenie kodu
Forum PHP.pl > Forum > Przedszkole
stellatus
Kod
window.onkeydown = function keyboardShortcuts(e) {
    if (e.keyCode == 37 || e.keyCode == 38) {
        galleryTop.slidePrev()
        sidenavCloseIfOpen()
    }
    if (e.keyCode == 39 || e.keyCode == 40 || e.keyCode == 32) {
        galleryTop.slideNext()
        sidenavCloseIfOpen()
    }
    if (e.keyCode == 65) {
        sidenavCloseIfOpen()
        autoplayToggle()
    }
    if (e.keyCode == 84) {
        if (thumbnailsToggle.checked) {
            thumbnailsToggle.checked = false
        } else {
            thumbnailsToggle.checked = true
        }
        thumbnailsSwitcher()
    }
    if (e.keyCode == 70) {
        fullscreenToggle()
    }
    if (e.keyCode == 73) {
        iconBarToggle()
    }
    if (e.keyCode == 77) {
        sidenavToggle()
    }
}


Bardzo dużo tutaj powtórzeń. Da się to jakoś prościej zapisać?
trueblue
  1. if (thumbnailsToggle.checked) {
  2. thumbnailsToggle.checked = false
  3. } else {
  4. thumbnailsToggle.checked = true
  5. }


  1. thumbnailsToggle.checked = !thumbnailsToggle.checked;


if możesz zastąpić switch. I tyle.
stellatus
Wielkie dzięki! O to właśnie mi chodziło:

Kod
window.onkeydown = function keyboardShortcuts(e) {
    switch (e.keyCode) {
        case 37:
        case 38:
            galleryTop.slidePrev()
            sidenavCloseIfOpen()
            break
        case 39:
        case 40:
        case 32:
            galleryTop.slideNext()
            sidenavCloseIfOpen()
            break
        case 65:
            sidenavCloseIfOpen()
            autoplayToggle()
            break
        case 84:
            if (thumbnailsToggle.checked) {
                thumbnailsToggle.checked = false
            } else {
                thumbnailsToggle.checked = true
            }
            thumbnailsSwitcher()
            break
        case 70:
            fullscreenToggle()
            break
        case 73:
            iconBarToggle()
            break
        case 77:
            sidenavToggle()
            break
    }
}


Działa znakomicie. Tylko nie rozumiem tego:
Kod
thumbnailsToggle.checked = !thumbnailsToggle.checked
nospor
! - to negacja

!false = true
!true = false
stellatus
To wiem, ale nie rozumiem jak to ma mi pomóc w uproszczenu kodu.
nospor
No zamiast 5 linijek
if (thumbnailsToggle.checked) {
thumbnailsToggle.checked = false
} else {
thumbnailsToggle.checked = true
}

Masz tylko jedna
thumbnailsToggle.checked = !thumbnailsToggle.checked

To sie nazywa uproszczenie kodu
stellatus
Wielkie dzięki! W ogóle tego nawet na początku nie wpisywałem, bo z góry założyłem, że nie zadziała. Jednak działa, ale nie mam pojęcia w jaki sposób. Muszę to przeanalizować.
nospor
thumbnailsToggle.checked = false
to rozumiesz? do thumbnailsToggle.checked przypisujesz false.

Na takiej samej zasadzie dziala
thumbnailsToggle.checked = !thumbnailsToggle.checked
do thumbnailsToggle.checked przypisujesz negacje thumbnailsToggle.checked. czyli jak bylo false to bedzie true. Jak bylo true to bedzie false.
stellatus
Tak, teraz rozumiem. To jest piękne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.