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

Dlaczego nic się potem nie dzieje???

VPS Starter Arubacloud
0 głosów
92 wizyt
pytanie zadane 22 sierpnia 2016 w JavaScript przez Miszo Bywalec (2,100 p.)
<script>

		    
		    	 $('document').ready( function () {

		    		$("#but").click( function () {


						$('#object').animate({bottom:"100px"},"fast" );
						$('#object').animate({right:"100px"},"fast");
						$('#object').animate({top:"100px"},"fast");
						$('#object').animate({left:"100px"},"fast");


		    			


		    		}

		    			);

		    	}

		    		);
		    </script>

Skrypt ten jest wykonany po naciśnięciu przycisku. Gdy go klikam skrypt działa i wykonuje się animacja polegająca na zmienianiu właściwości css tego objektu (div) Możemy zaobserwować krótką animację. Jednak gdy klikam w przycisk druga raz, to nic się nie dzieje. Tak jakby ten skrypt (animacja) mogła wykonać się tylko raz.

1 odpowiedź

0 głosów
odpowiedź 22 sierpnia 2016 przez ShiroUmizake Nałogowiec (46,300 p.)

Bo ustalasz raz tylko wskazaną wartość i jest JEST ONA NIEZMIENNA. Masz nawet przykład w dokumentacji, jak należy to zrobić:

( "#left" ).click(function(){
  $( ".block" ).animate({ "left": "-=50px" }, "slow" );
});

 

komentarz 22 sierpnia 2016 przez Miszo Bywalec (2,100 p.)
O jaką wartość ci chodzi? O położenie zapisane jako ilość pixeli od marginesu? No chyba raczej jest zmienna gdy w właściwości diva mamy position:absolute; Inaczej animate by nie zadziałał.
komentarz 23 sierpnia 2016 przez ShiroUmizake Nałogowiec (46,300 p.)

Margines , a wobec czego ma się dostosywać element to są DWIE RÓZNE RZECZY.  Bo element może mieć margines, ale również przesunięcie (top, left i tak dalej).

Taka dygresja na ten temat:

Tak chodzi o wartość podałeś tam 100. A ta liczba jest watością stałą. I skrypt zgodnie z działaniem wykonuje przesunięcie o 100 i tylko o 100. Ponieważ, animate nie dokłada swojej klasy CSS a pracuje na style. Mówiąc inaczej, dokleja swoje wartości do tagu style lub jak go nie ma -> to tworzy. I wpisuje stałą wartośc, czyli 100. A mowiąc dobitniej, każdy element(a właściwie węzeł) DOM (nawet ten bez id czy klasy), posiada właściwości, gdyż w JS każdy element DOM jest obiektem, jedną z takich właściwości jest style,margin te pole, poazwala  na przykład dodać do niego 100 po przez style, przez co margines wzrośnie . Ale on tylko raz to doda. Gdyż nie ma mechanizmu "=+" lub "=- " (zapomniałem jak to się nazywa xD), tym sposobem informuje przeglądarkę, że będę od wskazanej wartości (np: style.margin) zwiększał o 50 lub zmieniejszał np: 50, przy każdym zaincjonowaniu funkcji.  Przykład:

document.getElementById("jakis przycisk").addEventListener('click', function (50){
moveElement(50);}, false)


function moveElement(mojaWartoscPrzesuniecia){ 
var margin = document.getElementById("jakisElementDiv).style.marginLeft =+ mojaWartoscPrzesuniecia;
console.log ("Element HTML ma obecnie wartość " + margin);
}

Oczywiście postion nie jest równe margin, ale ma to służyć za przykład.

Czyli by skrypt poprawnie działał:

                        $('#object').animate({bottom:"+=100px"},"fast" );
                        $('#object').animate({right:"+=100px"},"fast");
                        $('#object').animate({top:"+=100px"},"fast");
                        $('#object').animate({left:+=100px"},"fast");

 

Podobne pytania

0 głosów
3 odpowiedzi 1,395 wizyt
0 głosów
1 odpowiedź 671 wizyt

92,975 zapytań

141,938 odpowiedzi

321,181 komentarzy

62,302 pasjonatów

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 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...