Przekazywanie stałej na zewnątrz funkcji

1

Witam,

$(() => {
  const $entryElements = $('[data-entry-id]');
  const $entryIds =
  $.map($entryElements, item => $(item).data('entryId'));
});
	
  console.log("ENRY IDS GLOBAL: ", $entryIds);
<a href="#" data-entry-id="{{ income.incSum }}" id="some-link-1"></a>

W powyższym kodzie chciałbym mieć dostęp do stałej $entryIds także poza funkcją. Gdy używam console.log wartości są puste. (W środku funkcji normalnie mam wartości)

Korzystałem z tego artykułu: https://cruftlesscraft.com/passing-data-from-twig-to-javascript

Proszę o pomoc jak mogę mieć dostęp do tej stałej $entryIds także poza funkcją .

1

Możesz spróbować tak

const $entryElements = $('[data-entry-id]');
const $entryIds = $.map($entryElements, item => $(item).data('entryId'));

bez tego

$(() => {

});

Ogólnie ten zapis z jQuery jest odpowiednikiem eventu DOMContentLoaded i uruchamia się dopiero po załadowaniu strony, wtedy skrypt ma pewność, że wszystkie elementy DOM zostały załadowane.

0

Obstawiam, że mu nie działało, bo szukany element jeszcze nie istniał w drzewie DOM.

2

Gdyby powyższe rozwiązanie nie działało przez brak danego elementu DOM to jest możliwość zmiany kolejności skryptów, tak żeby strona zdążyła się załadować

<!DOCTYPE html>
<html>
<head>
  ...
</head>
<body>
  Zawartość strony ...
  
  <div data-entry-id="...">Element, który chcemy pobrać</div>

  Dalsza zawartość strony ...

  <script src="/sciezka/do/biblioteki/jquery.js"></script>
  <script src="/sciezka/do/twojego/skryptu.js"></script>
</body>
</html>

(zazwyczaj najlepiej pod koniec <body>)

0

Zrobiłem tak jak powiedział: @Xarviel i teraz wszystko działa.
Dziękuję

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