is it possible to swap a paragraph of text with javascript/jQuery? I want a delay timer of about 5 seconds, and then the text should swap to something else, like a image slide. Would be awesome with a fade or an effect, but whatever works. Can you please point me in the right direction or help me out?
            Asked
            
        
        
            Active
            
        
            Viewed 6,080 times
        
    2
            
            
        - 
                    What mark-up are you working with? What have you tried already? What happened, or went wrong? What part(s) are you stuck on? – David Thomas Jul 05 '11 at 12:24
 - 
                    Anything here http://stackoverflow.com/search?q=jquery+animate+delay – mplungjan Jul 05 '11 at 12:26
 - 
                    possible duplicate of [Jquery animation repeating code.](http://stackoverflow.com/questions/5311972/jquery-animation-repeating-code) – mplungjan Jul 05 '11 at 12:36
 
5 Answers
1
            
            
        setTimeout(function() {
  $('#target').html('New Text');
}, 5000); // <- 5 seconds
and if you want to take it further
setInterval(function() {
  // do some change that will happen every 5 seconds
}, 5000); // <- 5 seconds
        Bill Bonar
        
- 1,017
 - 2
 - 10
 - 22
 
- 
                    
 - 
                    Thank you, I will try this code, and yes. I want it to loop, so that code was good. – lukas Jul 05 '11 at 12:28
 - 
                    I guess it doesn't matter but often for something this simple I prefer the setTimeout/setInterval because it reads a little more clear to me. But as far as overhead and/or other benefits I cannot think of any – Bill Bonar Jul 05 '11 at 16:33
 
1
            
            
        You can call the function with setTimeout as well
Edit:
Here is the tweaked demo, without a click and with interval
Edit 2:
Copy pasted the code here in case jsfiddle goes down.
<div class="texts">
  <p class="text text_1">text 1</p>
  <p class="text text_2">text 2</p>  
</div>
<script>
  setInterval(function(){
    var toggle = $(".text").hasClass("toggled");
    $(".text_1").animate({opacity: toggle ? 1 : 0});
    $(".text_2").animate({opacity: toggle ? 0 : 1});
    $(".text").toggleClass("toggled");
  }, 1000);
</script>
<style type="text/css">
.texts {
    position: relative;
}
.text {
    position: absolute;
    top: 0;
    left: 0;
}
.text_1{
    opacity: 1
}
.text_2{
   opacity: 0;
}
</style>
        egze
        
- 3,200
 - 23
 - 23
 
- 
                    Why not add a callback to make it loop and onload so not click is needed? – mplungjan Jul 05 '11 at 12:38
 - 
                    Yeah, how would you do that exactly? I want it to loop every 5 second without a click. – lukas Jul 05 '11 at 12:41
 - 
                    I can't get this to work with a loop and without the button click, anyone know how to get this going? – lukas Jul 05 '11 at 13:07
 - 
                    There you go http://jsfiddle.net/KepBX/1/ Tweak the timer to whatever you want. Now it's 1 second – egze Jul 05 '11 at 13:49
 
1
            Here is how to loop without setTimeout or setInterval
<div id="textMessage"></div>
<div class="textContent" style="display:none">Lorem ipsum dolor sit amet</div>
<div class="textContent" style="display:none">In sit amet diam et arcu aliquam tincidunt. </div>
function slide() {
  if (cnt>=texts.length) cnt=0;
  $('#textMessage').html(texts[cnt++]);
  $('#textMessage')
    .fadeIn('slow').animate({opacity: 1.0}, 3000).fadeOut('slow',
     function() {
       return slide()
     }
  );      
}      
$(document).ready(function() {
  // save the texts in an array for re-use
  $(".textContent").each(function() {
    texts[cnt++]=$(this).text();
  });
  slide()  
});
        mplungjan
        
- 169,008
 - 28
 - 173
 - 236
 
0
            
            
        function changeText(){
     document.getElementById('my_div_id').innerHTML = 'text_to_display';
}
you can implement changetext to have an array of strings on which you iterate inside the next function:
function timingex( ){
    setTimeout("changeText()",5000);
}
        Samuele Mattiuzzo
        
- 10,760
 - 5
 - 39
 - 63
 
0
            
            
        Put your content, that you want to fade in (we can name it #box), right on top of the <p>. Hide it with display:none;.
Then use for example:
function() {
    $("#box").delay(5000).fadeIn("slow");
}
        Steeven
        
- 4,057
 - 8
 - 38
 - 68