tags:

views:

4867

answers:

3

Hello.

I was wondering if it is possible to have a site with an iframe and some jquery code that changes the iframe content every 30 second. The content is differen webpages.

Something like this:

<html>
  <head>
    <script type="text/javascript" src="jquery.js"></script>
    <script>
      $(document).ready(function(){
        var array = new array();
        array[0] = 'http://webPage1.com';
        array[1] = 'http://webPage2.com';
        // And so on.
        // Do something here to change the iframe every 30 second
      });
    </script>
  </head>
  <body>
    <iframe id="frame"></iframe>
  </body>
</html>
A: 

If you just want to change where the iframe points to and not the actual content inside the iframe, you would just need to change the src attribute. You may (if this is not enough) also need to reload the iframe.

 $("#myiframe").attr("src") = "newwebpage.html";
 $("#myiframe").load();

Do you need help on the timing as well?

Anthony
A: 
var handle = setInterval(changeIframe, 30000);
var sites = ["google.com", "yahoo.com"];
var index = 0;

function changeIframe() {
  $('#frame')[0].src = sites[index++];
  index = index >= sites.length ? 0 : index;
}
geowa4
+4  A: 
<html>
  <head>
 <script type="text/javascript" src="jquery.js"></script>
 <script>
   $(document).ready(function(){
  var locations = ["http://webPage1.com", "http://webPage2.com"];
  var len = array.length;
  var iframe = $('#frame');
  var i = 0;
  setInterval(function () {
   $iframe.attr('src', locations[++i % len]);
  }, 30000);
   });
 </script>
  </head>
  <body>
 <iframe id="frame"></iframe>
  </body>
</html>
Anatoliy
The [++i % len] as a way to iterate through the array with recycling is brilliant! That taught me a new pattern! Thanks!
rhh