• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

javascript / jQuery przypisywanie wywoływanej funkcji pod onClick z tabeli

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
157 wizyt
pytanie zadane 23 sierpnia 2022 w JavaScript przez troian1337 Użytkownik (720 p.)
edycja 23 sierpnia 2022 przez troian1337

Witam, mam tabelę w której chcę przechowywać informację o przyciskach do utworzenia. 

var defaultOption = [
	{
		title: 'Sortuj parametry',
		onClick: 'setTheOrder'
	}
];

Oraz funkcję która generuje te przyciski

$.each(defaultOption, function(idx, data){
	var elem = document.createElement('a');
	elem.setAttribute('class', 'defaultOption');
	if (data.title) elem.innerHTML = data.title;
 $('#edit_product_card').append(elem);
});

Zabawa zaczyna się tutaj

if (data.onClick) elem.onclick = function() { setTheOrder(); }

Niestety nie bardzo wiem jak uzyskać efekt aby zamiast setTheOrder(); pobierało informację o nazwie funkcji z data.onClick.

Próbowałem czegoś w tym stylu jednak to też nie działa

elem.addEventListener("click", data.onClick, false);

Nie bardzo też wiem w jaki sposób "nazwać" to aby oddać o co mi chodzi więc może pokaże na przykładzie PHP

$this->model->{$_GET['funkcja']}($_GET['params']);

 

komentarz 23 sierpnia 2022 przez ScriptyChris Mędrzec (190,190 p.)

Niestety nie bardzo wiem jak uzyskać efekt aby zamiast setTheOrder(); pobierało informację o nazwie funkcji z data.onClick.

Co masz na myśli? Chcesz przypisać zawartość data.onClick do elem.onclick - czyli w data.onClick znajduje się funkcja (jej referencja albo sam kod do wywołania)?

komentarz 23 sierpnia 2022 przez troian1337 Użytkownik (720 p.)
W data.onClick chciałem przechować nazwę funkcji jaka znajduje się w innym pliku JS.

Docelowo chcę uzyskać efekt że w tabeli przechowuje informację o nazwie przycisku oraz to jaką funkcję ma mieć do siebie przypisaną (nazwę funkcji)
1
komentarz 23 sierpnia 2022 przez ScriptyChris Mędrzec (190,190 p.)

Odniesienie się do funkcji poprzez jej nazwę (zamiast referencji) zadziała, gdy przechowujesz ją jako metodę obiektu, albo ta funkcja jest globalna i przypisana do obiektu window. Wtedy możesz użyć bracket notation, żeby dostać się do funkcji dynamicznie poprzez obiekt, w którym ona się znajduje.

Na przykład:

window.explicitGlobalFunction = () => {};
var implicitGlobalFunction = () => {}; // dostępna również pod `window`

//// wywołania funkcji globalnych
window.explicitGlobalFunction(); 
window.implicitGlobalFunction();

// to samo, ale dynamicznie (za pomocą zmiennych)
const dynamicExplicitGlobalFunctionName = 'explicitGlobalFunction';
const dynamicImplicitGlobalFunctionName = 'implicitGlobalFunction';
window[dynamicExplicitGlobalFunctionName]();
window[dynamicImplicitGlobalFunctionName]();

//// wywołania metody
const dynamicMethodName = 'someMethod';
const obj = {
  someMethod() {}
};
obj.someMethod();
obj[dynamicMethodName](); // to samo, ale z użyciem nazwy ze zmiennej

 

1
komentarz 23 sierpnia 2022 przez troian1337 Użytkownik (720 p.)
edycja 23 sierpnia 2022 przez troian1337

Faktycznie dzięki za rozwiązanie

const functionName = data.onClick;
elem.onclick = function() { window[functionName](); }; 

A ja głupi szukałem po google pod frazami "convert string to function name"

komentarz 23 sierpnia 2022 przez VBService Ekspert (256,320 p.)

BTW, powinno zadziałać bez dodatkowych zmiennych

elem.addEventListener('click', window[data.onClick]);
elem.onclick = window[data.onClick];
elem.setAttribute('onclick', data.onClick +'()');

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 273 wizyt
pytanie zadane 1 lutego 2022 w JavaScript przez sk1neq Nowicjusz (120 p.)
0 głosów
1 odpowiedź 285 wizyt
pytanie zadane 23 października 2019 w JavaScript przez Mavimix Dyskutant (8,420 p.)
0 głosów
1 odpowiedź 504 wizyt
pytanie zadane 13 listopada 2018 w JavaScript przez FroGiS Użytkownik (810 p.)

93,182 zapytań

142,196 odpowiedzi

322,002 komentarzy

62,513 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2005p. - Łukasz Siedlecki
  7. 1964p. - CC PL
  8. 1835p. - Adrian Wieprzkowicz
  9. 1785p. - Michal Drewniak
  10. 1744p. - rafalszastok
  11. 1684p. - Mikbac
  12. 1624p. - Anonim 3619784
  13. 1520p. - Marcin Putra
  14. 1480p. - ssynowiec
  15. 1365p. - Dawid128
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...