Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Zapomnialem nazwy funkcji
Forum PHP.pl > Forum > Przedszkole
stefan33
Witam z góry bardzo dziekuje za pomoc bo zapomnialem nazwy funkcji a nie moge nic trafic w google zeby znalezc. Funkcja ta wypisywala bezposrednio tekst i dopiero wtedy zwrocona wartosc jest przetwarzana np. dzieki niej takie cos moze zadzialac:
  1. var ostrzez="alert";
  2. funkcja("document."+ostrzez+"('to jest alert')");

wyleciala mi z glowy a dawno nie potrzebowalem
lobopol
eval? Nie radzę używać.
wNogachSpisz
prompt?
stefan33
Cytat(lobopol @ 30.07.2012, 16:02:42 ) *
eval? Nie radzę używać.

tak, eval, dziekuje smile.gif w tym wypadku akurat musze jej uzyc i jest ok
Crozin
Niby dlaczego musiałbyś używać evala?
[JAVASCRIPT] pobierz, plaintext
  1. var fnName = "alert";
  2.  
  3. document[fnName]("To jest alert");
[JAVASCRIPT] pobierz, plaintext
stefan33
Cytat(Crozin @ 30.07.2012, 16:32:18 ) *
Niby dlaczego musiałbyś używać evala?
[JAVASCRIPT] pobierz, plaintext
  1. var fnName = "alert";
  2.  
  3. document[fnName]("To jest alert");
[JAVASCRIPT] pobierz, plaintext


tamto to byl tylko przyklad..
Crozin
W takim razie podaj konkretny przypadek, ponieważ w życiu nie spotkałem się jeszcze z koniecznością użycia evala. A jego użycie jest chyba pod każdym względem złe.
fleshgrinder
Cytat(Crozin @ 30.07.2012, 17:18:41 ) *
w życiu nie spotkałem się jeszcze z koniecznością użycia evala. A jego użycie jest chyba pod każdym względem złe.


niekiedy może się przydać
http://www.youtube.com/watch?v=6EJ801el-I8...be&t=31m00s
stefan33
Cytat(Crozin @ 30.07.2012, 17:18:41 ) *
W takim razie podaj konkretny przypadek, ponieważ w życiu nie spotkałem się jeszcze z koniecznością użycia evala. A jego użycie jest chyba pod każdym względem złe.


tutaj jest kod w którym użyłem eval'a:
  1. for(var j=0;j<topkaElements.length;j++)
  2. {
  3. eval("topkaElements[j].onmouseover=function(){createLabel(topkaElements["+j+"],podswietlacz);}");
  4. topkaElements[j].onmouseout=function (){podswietlacz.style.display="none";}
  5. }

musialem evalować to j, bo gdy tego nie robilem to pozostawalo dalej zmienna i na onmouseoverze rzecz jasna źle dzialalo
fleshgrinder
Cytat(stefan33 @ 31.07.2012, 16:37:47 ) *
tutaj jest kod w którym użyłem eval'a:
  1. for(var j=0;j<topkaElements.length;j++)
  2. {
  3. eval("topkaElements[j].onmouseover=function(){createLabel(topkaElements["+j+"],podswietlacz);}");
  4. topkaElements[j].onmouseout=function (){podswietlacz.style.display="none";}
  5. }

musialem evalować to j, bo gdy tego nie robilem to pozostawalo dalej zmienna i na onmouseoverze rzecz jasna źle dzialalo


mogłeś, i to działa, ale nie musiałeś. jest lepszy sposób smile.gif poczytaj o domknięciach (closures)

  1. for(var j=0;j<topkaElements.length;j++)
  2. {
  3. (function(j) {
  4. topkaElements[j].onmouseover = function() { createLabel(topkaElements[j],podswietlacz); };
  5. topkaElements[j].onmouseout = function () { podswietlacz.style.display="none"; };
  6. }(j));
  7. }
wNogachSpisz
Cytat(fleshgrinder @ 31.07.2012, 18:10:15 ) *
  1. for(var j=0;j<topkaElements.length;j++)
  2. {
  3. (function(j) {
  4. topkaElements[j].onmouseover = function() { createLabel(topkaElements[j],podswietlacz); };
  5. topkaElements[j].onmouseout = function () { podswietlacz.style.display="none"; };
  6. }(j));
  7. }


Ten kod w swojej wyśmienitości będzie łaskaw nie zadziałać pod Internet Explorer'em...
Ale kto by się przejmował takimi szczegółami.
Crozin
@wNogachSpisz: Niby dlaczego miałoby nie działać pod IE?
wNogachSpisz
element.onmouseover nie będzie hasać.
chyba że hardcoded, ale nadane jako atrybut już nie.
Crozin
Niczego z tego postu nie zrozumiałem. IE chyba od zawsze wspierał onmouseover, czy to jako bezpośrednią właściwość obiektu, czy przez attachEvent/addEventHandler (IE9+).
wNogachSpisz
Rozróżnijmy trzy sposoby zakładania lisinerów:

1. Hardcoded, w kodzie HTML "<a href="" onclick='alert()'>"
2. Uzycie addEvent
3. Przypisanie atrybutu przez JavaScript "anchor.onclick = 'alert()'"


Dwa pierwsze zadziałają, ostatni nie.
Crozin
Bo w ostatnim przypadku, powinno być:
[JAVASCRIPT] pobierz, plaintext
  1. anchor.onclick = function() {
  2. alert("blah");
  3. };
[JAVASCRIPT] pobierz, plaintext
I IE obsługuje to od dawien dawana.
fleshgrinder
Cytat(wNogachSpisz @ 31.07.2012, 20:44:05 ) *
Ten kod w swojej wyśmienitości będzie łaskaw nie zadziałać pod Internet Explorer'em...
Ale kto by się przejmował takimi szczegółami.


?

http://jsfiddle.net/8scCd/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.