带切换按钮的SlideShow(自动/步进)

时间:2017-03-25 22:32:00

标签: javascript html css

我的javascript和css中的幻灯片作业有问题(没有jquery或其他任何东西)。

这个幻灯片应该有两种模式:i)自动显示图片和ii)我手动更改它们的步骤。按钮应分别改变。 两种模式都可以正常工作但我的切换按钮不能......

任何帮助表示赞赏!

这是我的代码:

CSS

   <style type="text/css">
   body { padding-top: 2%; }
   div {border:solid red 1px; width:550px; padding:10px ; text-align:center;}
   textarea {background-color: #ccc;}
   .Slides {display : none; }
   </style>

HTML

<form id="form1" name="form1" method = "GET" action="">
    <input type = "text" id="current" name="s" value=""   />
    <input type = "button" value="PREVIOUS" onclick="myClick_previous()" />
    <input type = "button" value="NEXT" onclick="myClick()" />
    <!-- <input type = "button" value="STEP" id="step" onclick="ToggleButton" /> -->
    <button class="controls" id="pause">Pause</button>


</form>
<div id="container" >
simple SLIDE SHOW
    <img id="Slide001" class="Slides" src="slides/Slide001.jpg" />
    <img id="Slide002" class="Slides" src="slides/Slide002.jpg" />   
    <img id="Slide003" class="Slides" src="slides/Slide003.jpg" />
    <img id="Slide004" class="Slides" src="slides/Slide004.jpg" />   
    <img id="Slide005" class="Slides" src="slides/Slide005.jpg" />
    <img id="Slide006" class="Slides" src="slides/Slide006.jpg" /> 
    <textarea id="TimeLineInfos" name="TimeLineInfos" rows="4" cols="50" ></textarea>
</div>

的Javascript

<script>
var currentSlide = 1;
document.getElementById('Slide001').style.display = "inline" ;
document.getElementById('current').value = 'Slide00' + (currentSlide +0);
document.getElementById('TimeLineInfos').value = 'Slide00'+currentSlide + ' : ' + TimeEst() + '\n';

function myClick(){
    var t = TimeEst()
    currentSlide += 1 ; 
    if ( currentSlide != 7 ) {
        var currentID  = 'Slide00'+currentSlide ;
        var previousID = 'Slide00'+(currentSlide - 1) ;
    } 
    if ( currentSlide == 7 ) {
        currentSlide = 1 
        var currentID  = 'Slide001' 
        var previousID = 'Slide006' 
    }        
    document.getElementById(previousID).style.display = "none" ;    
    document.getElementById(currentID).style.display = "inline" ;
    document.getElementById('current').value = currentID;
    document.getElementById('TimeLineInfos').value += currentID + ' : ' + t + '\n';   
    //sendTimeLine(currentID,t);
    //document.form1.submit();
}

function myClick_previous(){
    var t = TimeEst()
    currentSlide -= 1 ; 
    if ( currentSlide != 0 ) {
        var currentID  = 'Slide00'+currentSlide ;
        var previousID = 'Slide00'+(currentSlide + 1) ;
    } 
    if ( currentSlide == 0 ) {
        currentSlide = 6
        var currentID  = 'Slide006' 
        var previousID = 'Slide001' 
    }        
    document.getElementById(previousID).style.display = "none" ;    
    document.getElementById(currentID).style.display = "inline" ;
    document.getElementById('current').value = currentID;
    document.getElementById('TimeLineInfos').value += currentID + ' : ' + t + '\n';   

}

var myIndex = 0;
slide();
var timer;

function slide() {
    var i;
    var x = document.getElementsByClassName("Slides");
    for (i = 0; i < x.length; i++) {
       x[i].style.display = "none";  
    }
    myIndex++;
    if (myIndex > x.length) {myIndex = 1}    
    x[myIndex-1].style.display = "block";  
   timer=setTimeout(slide, 3000); // Change image every 3seconds
}



   //from down here is my problematic code
var playing = true;
var pauseButton = document.getElementById('pause');

function pauseSlideshow(){
    pauseButton.innerHTML = 'Play';
    playing = false;
    clearInterval(timer);
}

function playSlideshow(){
    pauseButton.innerHTML = 'Pause';
    playing = true;
    slideInterval = setInterval(slide,3000);
}

pauseButton.onclick = function(){
    if(playing){ pauseSlideshow(); }
    else{ slide(); }
}; 

function TimeEst(){
    var d = new Date();
    var t = d.getTime() ;// + "." + d.getMilliseconds();
    return t;
}  
</script>

1 个答案:

答案 0 :(得分:0)

我终于找到了......答案比我想象的要容易!(我只是张贴它以防有人需要它作为一个例子......)

HTML,CSS保持不变,只有Javascript被更改了!

我们走了:

<script>
var currentSlide = 1;
var flag=1;
document.getElementById('Slide001').style.display = "inline" ;
document.getElementById('current').value = 'Slide00' + (currentSlide +0);
document.getElementById('TimeLineInfos').value = 'Slide00'+currentSlide + ' : ' + TimeEst() + '\n';


var timer = setInterval(function(){ myClick_next(); }, 3000);
var playing=true;

function toggle()
{
    if(playing==true)
    {
        playing=false;
        clearInterval(timer);
        document.getElementById("STEP").value = "AUTO";
    }
    else
    {
        playing=true;
        timer=setInterval(function(){ myClick_next(); }, 3000);
        document.getElementById("STEP").value = "STEP";
    }
}

document.getElementById("BACK").disabled = true;

function myClick_next(){
    var t = TimeEst()
    currentSlide += 1 ; 
    document.getElementById("BACK").disabled = false;
    if ( currentSlide != 7 ) {      
        var currentID  = 'Slide00'+currentSlide ;
        var previousID = 'Slide00'+(currentSlide - 1) ;
    } 
    if ( currentSlide == 7 ) {
        currentSlide = 1 
        var currentID  = 'Slide001' 
        var previousID = 'Slide006' 
    }        
    document.getElementById(previousID).style.display = "none" ;    
    document.getElementById(currentID).style.display = "inline" ;
    document.getElementById('current').value = currentID;
    document.getElementById('TimeLineInfos').value += currentID + ' : ' + t + '\n';   
    //sendTimeLine(currentID,t);
    //document.form1.submit();
}


function myClick_previous(){
    var t = TimeEst()
    currentSlide -= 1 ; 
    if ( currentSlide != 0 ) {
        var currentID  = 'Slide00'+currentSlide ;
        var previousID = 'Slide00'+(currentSlide + 1) ;
    } 
    if ( currentSlide == 1 ) {
        document.getElementById("BACK").disabled = true;
        //currentSlide = 6 
        //var currentID  = 'Slide006' 
        //var previousID = 'Slide001' 
    }        
    document.getElementById(previousID).style.display = "none" ;    
    document.getElementById(currentID).style.display = "inline" ;
    document.getElementById('current').value = currentID;
    document.getElementById('TimeLineInfos').value += currentID + ' : ' + t + '\n';   
    //sendTimeLine(currentID,t);
    //document.form1.submit();
}

function TimeEst(){
    var d = new Date();
    var t = d.getTime() ;// + "." + d.getMilliseconds();
    return t;
}  


</script>