Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nazwa edytowanego stylu jest zapisana w zmiennej - alternatywa dla eval()?
Sebusik
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 29.01.2011

Ostrzeżenie: (0%)
-----


Załóżmy, że mam taką funkcję:
  1. function abc(a)
  2. {
  3. eval("document.getElementById('okno').style." + a + " = '10'");
  4. }


Oraz wywołanie:

  1. <a href="#" onclick="abc('width')">abc!</a>


Jak widać "width" mam w zmiennej. I pytanie - czy w tym wypadku istnieje jakaś alternatywa dla eval() (po prostu, żeby jej nie używać)?

Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sebusik
post
Post #2





Grupa: Zarejestrowani
Postów: 47
Pomógł: 1
Dołączył: 29.01.2011

Ostrzeżenie: (0%)
-----


Dzięki, znalazłem to wcześniej, ale myślałem, że nie będę musiał tego używać (IMG:style_emoticons/default/wink.gif)

Teraz mam taki "grubszy" problem. Całość opiera się na tym, że chcę zbudować funkcję, która będzie animowała różne elementy na stronie (szerokość jakiegoś diva, margines, itp.). Na początku było ok - do funkcji podawało się ilość pikseli, o którą div będzie się powiększał co jakiś czas (tu wykorzystanie setInterval). Ale gdy div miał szerokość 400, a wysokość 600, to powiększanie było nie równe (wiadomo, najpierw kończyła szerokość, potem wysokość). Więc wykombinowałem, że zamiast ilość pikseli będę umieszczał czas, w jakim powiększanie np. szerokości diva ma się zmieścić. I tu zaczynają się problemy. Wykombinowałem taki wzór:

ilosc pikseli na raz = ilosc pikseli/czas*predkosc

ilość pikseli na raz - o tyle będzie się przesuwał div za każdym razem (ta funkcja, co jest zapętlona w setInterval
ilosc pikseli = droga, jaką te powiększenie/pomniejszenie musi przejść (czy np. div ma 400, a ma mieć 600, więc 200)
czas = czas, w takim czasie te powiększenie musi się odbyć
prędkość = to jest zapętlenie w while, począwszy od 1 do... i tutaj nie wiem do ile, tego jeszcze nie ustaliłem do końca

Jak wiadomo, nie można przesunąć diva o np. 3.14 piksela, więc wynik powyższego działania musi być całkowity (tak też jest zapętlona powyżej pętla). Ale są liczby, gdzie wynik całkowity jest o np. 30 pikseli mniej, a wychodzi, żeby przesuwać o 3 piksele na raz z prędkością np. 8, więc cały czas będzie się przesuwać o 3, a na końcu nagle o 30.



Nie wiesz może, co innego (najlepiej prostszego (IMG:style_emoticons/default/biggrin.gif) ) zastosować, aby to dobrze działało? Albo udoskonalić to, co sam zrobiłem, nie wiem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 01:05