Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery]
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Largo1234
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. });
trueblue
Musisz użyć zdarzenia onStateChange, tam sprawdzić stan (dostaniesz w event.data).
Largo1234
Możesz jaśniej bo dopiero raczkuje w jquery/javascript biggrin.gif
Largo1234
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
trueblue
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) {
Largo1234
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. };
trueblue
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: ==
Largo1234
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. };
trueblue
  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. };


Largo1234
Niestety to nie działa... sad.gif
trueblue
A gdzie masz podpięty listener playerStateChanged?
Pokaż cały kod.
Largo1234
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. });
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.