Popup z localStorage

0

Witam
Mam poniższy skrypt (do jednokrotnego wyświetlenia okienka popup rodo), ale nie działa tzn. skrypt po przeładowaniu strony wyświetla się ponownie,
a powinien wyświetlić się tylko raz (dopóki użytkownik nie skasuje zawartości localStorage). LocalStorage zapisuje się poprawnie.
Gdzie jest błąd?

<div id="klauzula_popup">
		<div>
			<div>
				<p>Szanowny Użytkowniku,</p>
			</div>
			<div id="klauzula_hide">
			 <div style="background: #0064c8; margin: 0px auto; padding: 0px 20px; border-radius: 5px; color: #ffffff; line-height: 45px; font-size: 18px; cursor: pointer;">Akceptuję</div>
			</div>
		</div>
	</div>
<script>
var wyswietlono = localStorage.getItem('klauzula');
if (wyswietlono != 'tak') {
$('#klauzula_popup').show();}

$('#klauzula_hide').click(function() {
$('#klauzula_popup').hide();
localStorage.setItem('klauzula','tak');
});
</script>
1

A gdzie niby ten twoj if jest zamkniety?

BTW, wersja uproszczona dziala, wiec moze masz cos z funkcja .click. W ogole tam wchodzisz?

<script>
    var wyswietlono = localStorage.getItem('klauzula');
    if (wyswietlono !== 'tak') {
        let x = window.prompt('Tak czy nie');
if(x !== null) {
            localStorage.setItem('klauzula', 'tak');
        }
    }
</script>
0

Chyba jestem za słaby w js żeby Ci sensownie odpowiedzieć... Możliwe, że nie...
Na razie przerobiłem jn, ale to nadal nie działa jednorazowo.

<script>
var wyswietlono = localStorage.getItem('klauzula');
if (wyswietlono != 'tak') {
$('#klauzula_popup').show();
} else {
$('#klauzula_hide').click(function() {
$('#klauzula_popup').hide();
localStorage.setItem('klauzula','tak');
})};
</script>
1

A masz domyślnie ukryty ten popup? Bo z pierwszego kodu wynika, że po wejściu na stronę nie ma on nigdzie czegoś w stylu "display: none" więc jest domyślnie widoczny i w JS jeżeli masz ustawioną wartość w localStorage na "tak" to nie ukrywasz go tylko podłączasz event do przycisku w tym popupie. Więc wg ostatniego kodu albo go pokazujesz albo dodajesz event do przycisku na nim, więc jak ktoś nie miał zapisane "tak" w localStorage to przycisk mu nic nie zmieni, więc w ogóle to bez sensu.

2

Z podanego powyżej kody wynika, że nie masz importu jquery, a próbujesz się nim posługiwać. Analizując błędy w swoim kodzie zacznij od uruchomienia narzędzi programisty F12 i przeczytania komunikatu w konsoli. Jeżeli błędu w konsoli nie ma to w zakładce sources ustawiasz sobie debugger i sprawdzasz co się dzieje.

//edit - ok widzę już co się dzieje, to powinno rozwiązać problem.

const wyswietlono = localStorage.getItem('klauzula');
if (wyswietlono === 'tak') {
    $('#klauzula_popup').hide();
}

$('#klauzula_hide').click(function() {
    $('#klauzula_popup').hide();
    localStorage.setItem('klauzula','tak');
});
0

Wielkie dzięki wszystkim za pomoc. Rozwiązanie Haskella okazało się właśnie tym poszukiwanym. Działa! :-)

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