Przekazywanie stałej na zewnątrz funkcji

Przekazywanie stałej na zewnątrz funkcji
B1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
1

Witam,

Kopiuj
$(() => {
  const $entryElements = $('[data-entry-id]');
  const $entryIds =
  $.map($entryElements, item => $(item).data('entryId'));
});
	
  console.log("ENRY IDS GLOBAL: ", $entryIds);
Kopiuj
<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ą .

Xarviel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 847
1

Możesz spróbować tak

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

bez tego

Kopiuj
$(() => {

});

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.

szatkus1
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Xarviel
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 847
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ć

Kopiuj
<!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>)

B1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.