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
    32
    Posty
    4,489
    Siła reputacji
    14

    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
    10

    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. #3
    Avatar BBsrv
    Data rejestracji
    2013
    Położenie
    50cm od monitora
    Wiek
    32
    Posty
    4,489
    Siła reputacji
    14

    Domyślny

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

  4. Reklama
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
  •