Autor Zpráva
Pavliczeck
Profil
Dobrý den,

mám tento script, který má fungova tak, že jednou za 24 hodin vyskočí návštěvníkovi vyskakovací okno s nabídkou práce. V konzoli se mi však objevuje chyba a nemohu zjistit co to znamená a jak to upravit. Umíte poradit? Děkuji.

null is not an object (evaluating 'divElement.style')

<script>
// Získat aktuální datum a čas
const now = new Date();

// Získat datum a čas z cookies, pokud existuje
const lastShownDate = document.cookie.split(';').find(cookie => {
  const [key, value] = cookie.split('=');
  return key === 'lastShownDate' && value;
});
const lastShownDateObject = lastShownDate ? new Date(lastShownDate) : null;

// Zkontrolovat, zda div zobrazovat
const shouldShowDiv = !lastShownDateObject || now.getTime() - lastShownDateObject.getTime() >= 86400000; // 24 hodin v milisekundách

// Zobrazit div, pokud je to vhodné
const divElement = document.getElementById('boxes');
if (shouldShowDiv) {
  divElement.style.display = 'block';  //null is not an object (evaluating 'divElement.style')

  // Nastavit datum a čas do cookies
  const expires = new Date(now.getTime() + 86400000); // 24 hodin v milisekundách
  document.cookie = `lastShownDate=${now.toISOString()}; expires=${expires.toUTCString()}; path=/`;
} else {
  divElement.style.display = 'none';
}
</script>


<div id="boxes">
<div style="top: 50%; left: 50%; display: none;position:fixed" id="dialog" class="window"> 
<div id="san">

<a href="#" class="close agree"><img src="img/close-icon.png" width="25" style="float:right; margin-right: -22px; margin-top: -20px;"></a>
<img src="img/pozorprace.png" class="praceruka">
 <h1>Vyskakovací nabídka 1x za 24 hodin</h1>

        <p>Aktuálně hledáme <strong>kandidáty na tyto pracovní pozice</strong>:</p>

        
</div>
</div>
<div style="width: 100%; font-size: 32pt; color:white; height: 100%; display: none; opacity: 0.4;" id="mask"></div>
</div>




<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js"></script> 
<script src="swcc.js"></script>

  <div class="web">
      <h1>Vyskakovací okno na 24 hodin</h1>
  </div>
  
blaaablaaa
Profil
Pavliczeck:
Děje se přesně to, co to píše - divElement je v danou chvíli null.
Pavliczeck
Profil
A to je chyba? Podle všeho to totiž nemá na nic vliv.
RastyAmateur2
Profil *
Pavliczeck:
No jelikož element neexistuje, tak se mu nenastaví display: block a tedy vyskakovací okénko se nezobrazí a nebo naopak neskryje (záleží na výchozí hodnotě).

Jedním z řešení by bylo ten element script přesunout až pod to HTML, kde je daný div vytvořen.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0