Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery], Losowanie
Largo1234
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.01.2012

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


Witam, próbuje zrobić odtwarzanie losowe, chciałbym aby po kliknięciu przycisku, automatycznie po zakończeniu filmu otwierał się następny, ten kod działa jednak dopiero gdy film się zakończy, wtedy trzeba ręcznie kliknąć #losuj i otwiera się następny element a chce żeby tylko trzeba było raz kliknąć i wtedy aktywowała by się ten kod zawsze wtedy kiedy film się zakończy, czyli zwróci 0.
  1. $(document).ready(function() {
  2. $("#losuj").on('click',function(e) {
  3. //ytplayer.getPlayerState() zwraca 0 gdy film sie zakonczyl
  4. //jeżeli film się skończył wykonaj
  5. if ( ytplayer.getPlayerState() == 0 ) {
  6. //element do kliknięcia
  7. var list = $('.koncentrator a.utwor');
  8. //kliknij w losowy element spośród .koncentrator a.utwor
  9. list.eq(parseInt(Math.random()*list.length)).click();
  10. //przewiń do tego elementu
  11. $(".active").get(0).scrollIntoView();
  12.  
  13. }
  14. });
  15. });


Ten post edytował Largo1234 11.11.2014, 09:35:55
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Musisz użyć zdarzenia onStateChange, tam sprawdzić stan (dostaniesz w event.data).


--------------------
Go to the top of the page
+Quote Post
Largo1234
post
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.01.2012

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


Możesz jaśniej bo dopiero raczkuje w jquery/javascript biggrin.gif
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


https://developers.google.com/youtube/js_ap...bscribingEvents


--------------------
Go to the top of the page
+Quote Post
Largo1234
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.01.2012

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


ok mam cos takiego:
  1. function playerStateChanged(state) {
  2. // State code 0 means playback ended
  3. if (state == 0) {
  4. var list = $('.koncentrator a.utwor');
  5. //kliknij w losowy element spośród .koncentrator a.utwor
  6. list.eq(parseInt(Math.random()*list.length)).click();
  7. //przewiń do tego elementu
  8. $(".active").get(0).scrollIntoView();
  9. }
  10. };


I działa!!! zakochany.gif ale teraz chciałbym aby uruchamiała się ta funkcje po aktywowaniu przycisku np. o nazwie "odtwarzaj losowo" a po jego ponownym kliknięciu wyłączyć funkcje, proszę o pomoc smile.gif
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


1. Ustalasz jakąś zmienną i jej początkową wartość na X.
2. Jeśli klikasz, to zmienna przyjmuje Y jeśli ma X, X jeśli ma Y.
3. Zmieniasz warunek: if(state==0&&zmienna==X) {


--------------------
Go to the top of the page
+Quote Post
Largo1234
post
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.01.2012

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


Czyli gdzieś tam trzeba nadać wartość 0 zmiennej losowo a po kliknięciu nadać wartość 1, ten kod ma wyglądać tak?:
  1.  
  2. var losowo = 0;
  3. function playerStateChanged(state,losowo) {
  4. // State code 0 means playback ended
  5. if(state==0&&losowo==1) {
  6. var list = $('.koncentrator a.utwor');
  7. list.eq(parseInt(Math.random()*list.length)).click();
  8. setTimeout(function(){
  9. $(".active").get(0).scrollIntoView();
  10. }, 1000);
  11. }
  12. };


Tylko jak to zrobić żeby zmienić wartość tej zmiennej losowo na 1, , kombinuje i mi nie wychodzi... facepalmxd.gif

próbowałem tak ale to nie działa

  1. $(document).ready(function() {
  2. var losowo=0;
  3. $("#losuj").on('click',function(e) {
  4. var losowo=1;
  5. });
  6. });
  7. </script>
  8.  
  9. function playerStateChanged(state,losowo) {
  10. // State code 0 means playback ended
  11. if(state==0&&losowo==1) {
  12. var list = $('.koncentrator a.utwor');
  13. list.eq(parseInt(Math.random()*list.length)).click();
  14. setTimeout(function(){
  15. $(".active").get(0).scrollIntoView();
  16. }, 1000);
  17. }
  18. };


Ten post edytował Largo1234 11.11.2014, 12:49:31
Go to the top of the page
+Quote Post
trueblue
post
Post #8





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Wartość zmiennej losowo ustalasz przy inicjalizacji, oraz przy click. Zadeklaruj ją poza funkcją click i playerStateChanged. Do playerStateChanged nie przekazuj jej jako argument.
Porównanie: ==


--------------------
Go to the top of the page
+Quote Post
Largo1234
post
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.01.2012

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


Przepraszam to tylko błąd w kopiowaniu, w dokumencie mam ==.

zrobiłem coś takiego, po kliknięciu niby wartość zmiennej to 1 ale i tak nie działa...

  1. $(document).ready(function() {
  2. var losowo=0;
  3. $("#losuj").on('click',function(e) {
  4. var losowo=1;
  5. alert (losowo);
  6. });
  7. });
  8. </script>
  9. function playerStateChanged(state) {
  10. // State code 0 means playback ended
  11. if(state==0&&losowo==1) {
  12. var list = $('.koncentrator a.utwor');
  13. list.eq(parseInt(Math.random()*list.length)).click();
  14. setTimeout(function(){
  15. $(".active").get(0).scrollIntoView();
  16. }, 1000);
  17. }
  18. };


Ten post edytował Largo1234 11.11.2014, 12:53:38
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. $(document).ready(function() {
  2. var losowo=true;
  3. $("#losuj").on('click',function(e) {
  4. losowo=!losowo;
  5. });
  6. });
  7.  
  8. function playerStateChanged(state) {
  9. // State code 0 means playback ended
  10. if(state==0&&losowo) {
  11. var list = $('.koncentrator a.utwor');
  12. list.eq(parseInt(Math.random()*list.length)).click();
  13. setTimeout(function(){
  14. $(".active").get(0).scrollIntoView();
  15. }, 1000);
  16. }
  17. };




--------------------
Go to the top of the page
+Quote Post
Largo1234
post
Post #11





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.01.2012

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


Niestety to nie działa... sad.gif
Go to the top of the page
+Quote Post
trueblue
post
Post #12





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A gdzie masz podpięty listener playerStateChanged?
Pokaż cały kod.


--------------------
Go to the top of the page
+Quote Post
Largo1234
post
Post #13





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.01.2012

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


To działa! dzięki guitar.gif
  1. $(document).ready(function() {
  2. var losowo=false;
  3. $( "#losuj" ).click(function() {
  4. losowo=!losowo;
  5. });
  6. playerStateChanged = function(state) {
  7. // State code 0 means playback ended
  8. if(state==0&&losowo) {
  9. var list = $('.koncentrator a.utwor');
  10. list.eq(parseInt(Math.random()*list.length)).click();
  11. setTimeout(function(){
  12. $(".active").get(0).scrollIntoView();
  13. }, 1500);
  14. }
  15. }
  16. });


Ten post edytował Largo1234 12.11.2014, 09:09:14
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 03:53