2011-05-31 1 views
0

J'apprends mon chemin autour de jquery mais je ne suis pas encore au stade où je peux ajouter mon propre JavaScript. J'ai cherché partout sur Internet pour ajouter un bouton de lecture/pause à mon diaporama en arrière-plan en plein écran. Voici le JavaScript pour le diaporama.Bouton Lecture/Pause pour le diaporama en plein écran

À la votre!

function slideSwitch() { 
var $active = $('#slideshow IMG.active'); 

if ($active.length == 0) $active = $('#slideshow IMG:last'); 

// use this to pull the images in the order they appear in the markup 
//var $next = $active.next().length ? $active.next() 
    //: $('#slideshow IMG:first'); 

// uncomment the 3 lines below to pull the images in random order 

var $sibs = $active.siblings(); 
var rndNum = Math.floor(Math.random() * $sibs.length); 
var $next = $($sibs[ rndNum ]); 


$active.addClass('last-active'); 

$next.css({opacity: 0.0}) 
    .addClass('active') 
    .animate({opacity: 0.87}, 1000, function() { 
     $active.removeClass('active last-active'); 
    }); 
} 

$(function() { 
    setInterval("slideSwitch()", 5000); 
}); 
+0

Java n'est pas ** JavaScript; alors que jQuery ** est ** (une bibliothèque de) JavaScript. –

+0

ok merci l'homme, juste supposé java était court! – Craig

+0

Pas de problème du tout :) –

Répondre

1

J'ajouterais un bouton à la #slideshow HTML, ou en annexe préfixé ne serait pas question (cela suppose que vous commencez avec le jeu diaporama)

<a class="pause" href="#">Pause</a> 

Ensuite, placez le suivant dans votre CSS:

#slideshow { 
    position: relative; 
} 
#slideshow a { 
    position: absolute; 
    top: ##px; 
    left: ##px; 
    display: none; 
    width: ##px; 
    height: ##px; 
} 
#slideshow:hover a { 
    display: block; 
} 
a.pause { 
    background-image: url('/path/to/pause.png'); 
} 
a.play { 
    background-image: url('/path/to/play.png'); 
} 

et pour la finale, il suffit d'utiliser le code JavaScript suivant et configurer un peu: // AJOUTÉE var t; // endADDED

function slideSwitch() { 
var $active = $('#slideshow IMG.active'); 

if ($active.length == 0) $active = $('#slideshow IMG:last'); 

// use this to pull the images in the order they appear in the markup 
//var $next = $active.next().length ? $active.next() 
//: $('#slideshow IMG:first'); 

// uncomment the 3 lines below to pull the images in random order 

var $sibs = $active.siblings(); 
var rndNum = Math.floor(Math.random() * $sibs.length); 
var $next = $($sibs[ rndNum ]); 

$active.addClass('last-active'); 

$next.css({opacity: 0.0}) 
     .addClass('active') 
     .animate({opacity: 0.87}, 1000, function() { 
     $active.removeClass('active last-active'); 
    }); 
} 
//ADDED 
//@TODO: this doesn't really account for the possibility that the slideshow wouldn't be playing on page load, it may be better to bind seperate events to .pause and .play, but in general, I think toggle may be more effective. Another option would be to use click() and just throw in an if statement. 
$('#slideshow').find('a').toggle(
    function() { 
     $(this).attr('class', 'play'); 
     t = window.clearInterval(t); 
    }, 
    function() { 
     $(this).attr('class', 'pause'); 
     t = setInterval("slideSwitch()", 5000); 
    } 
); 
//endADDED 

$(function() { 
    t = setInterval("slideSwitch()", 5000); 
}); 

Je suis désolé si elle est un peu écrit rapidement, j'aurais probablement fait quelques petites choses un peu différentes, mais voulait le faire fonctionner avec/votre code précédent au lieu de simplement vous remettre quelque chose complètement différent sans explication. Si vous voulez, je peux trouver un de mes diaporamas plus tard ce soir que j'ai fait auparavant, et vous lier à un jsfiddle ou à l'essentiel, je n'ai juste pas le temps pour le moment. Si cela ne fonctionne pas, il a probablement quelque chose à faire avec les shenanigans (set | clear) Interval (pour être honnête, j'ai toujours utilisé (set | clear) Timeout();)

Espérons qu'il aide!

+0

C'est génial merci pour l'aide !! cela a fonctionné mais d'une manière très étrange haha, j'ai mis le code mais j'ai ce bouton de rechargement que j'allais appliquer le bouton pause, mais avec cette pause attachée au diaporama css je ne pouvais pas fais le. Cependant quand je clique sur le bouton recharger sur le site, il recharge la page et bascule le diaporama qui est parfait !!! – Craig

+0

On dirait que cela a fonctionné, si oui, vous pourriez le marquer répondu. – Kai

Questions connexes