Reklama
Pokazuje wyniki od 1 do 3 z 3

Temat: js, addeventlistener z funkcją ze stringa

  1. #1
    Avatar BBsrv
    Data rejestracji
    2013
    Położenie
    50cm od monitora
    Wiek
    31
    Posty
    4,489
    Siła reputacji
    13

    Domyślny js, addeventlistener z funkcją ze stringa

    mam sobie string
    Kod:
    var xd = 'document.getElementsByTagName("input")[0].value = "123";document.getElementsByTagName("input")[1].value = "321";';
    a dokładniej jakąś funkcję zapisaną jako string, normalnie jak bym chciał to wywołać użyłbym eval(), natomiast jak użyć tego stringu (funkcji) jako parametr listener'a?

    mam sobie
    Kod:
    document.getElementById('b1').addEventListener('click', cotuwpisac?, false);
    generalnie to mam sobie tablicę ze stringami "funkcji", którą to pobieram sobie $.get'em i chciałbym to pętlą/$.each'em zrobić tak, żeby każdą z każdej funkcji (stringu - elementu tablicy) stworzyło mi listenera z daną funkcją (troche masło maślane, ale chyba wiadomo o co chodzi)

    coś w stylu
    Kod:
    document.getElementById('b1').addEventListener('click', eval(xd), false);
    nie działa, bo automatycznie mi wykonuje tego evala po wrzuceniu tego w konsole xd


    boże jakie to proste było... eh można skasować

    document.getElementById('b1').addEventListener('cl ick', function(){eval(xd)}, false); ;/
    Ostatnio zmieniony przez BBsrv : 10-04-2017, 01:41
    Kontakt ze mną:
    pw

  2. #2
    Avatar doniuu
    Data rejestracji
    2015
    Posty
    57
    Siła reputacji
    9

    Domyślny

    mozesz zrobic troche lepiej, tj. oszczedzic przy kazdym wywolaniu eventa calla do eval (a wiec parsowania kodu, co jest dosc kosztowne).

    Kod:
    const code = "alert('foo')"
    const node = document.getElementById(...)
    node.addEventListener('click', new Function(code))
    co jest rownoznaczne z

    Kod:
    const fun = () => { alert('foo') }
    const node = document.getElementById(...)
    node.addEventListener('click', fun)
    mozesz dla tak stworzonej funkcji rowniez zdefiniowac parametry. w tym wypadku przydatne moze byc przyjmowanie MouseEvent.

    Kod:
    const code = 'alert(`${e.clientX} ${e.clientY}`)'
    const node = document.getElementById(...)
    node.addEventListener('click', new Function('e', code))
    rownoznaczne z

    Kod:
    const fun = e => { alert(`${e.clientX} ${e.clientY}`) }
    const node = document.getElementById(...)
    node.addEventListener('click', fun)
    po kliknieciu na `node` wyskoczy alert z wspolrzednymi kursora.

    wiecej info na MDN: https://developer.mozilla.org/en-US/...jects/Function
    Ostatnio zmieniony przez doniuu : 11-04-2017, 14:40

  3. Reklama
  4. #3
    Avatar BBsrv
    Data rejestracji
    2013
    Położenie
    50cm od monitora
    Wiek
    31
    Posty
    4,489
    Siła reputacji
    13

    Domyślny

    oo dziękować :)
    Kontakt ze mną:
    pw

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. [8.5] Funkcja "doDecayItem"
    Przez Naruto-XNE w dziale Strefa developerska
    Odpowiedzi: 0
    Ostatni post: 23-09-2010, 23:20
  2. [8.x] Funkcja - odejmowanie skill
    Przez Canibaal w dziale Strefa developerska
    Odpowiedzi: 2
    Ostatni post: 20-09-2010, 18:56
  3. [8.54] Funkcja Drzwi.
    Przez Naruto-XNE w dziale Strefa developerska
    Odpowiedzi: 0
    Ostatni post: 18-09-2010, 19:38
  4. [8.0]Funkcja lua - co znaczy?
    Przez mejo33 w dziale Strefa developerska
    Odpowiedzi: 1
    Ostatni post: 18-09-2010, 17:47
  5. [8.4+]findItem - prosta funkcja poszukująca dany przedmiot
    Przez Grim90 w dziale Skrypty i technika
    Odpowiedzi: 1
    Ostatni post: 21-08-2010, 15:07

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •