Перейдите через удаленные javascripts, чтобы создать несколько фидер погоды - PullRequest
1 голос
/ 30 июля 2010

Я использую фид погоды, чтобы показывать погоду на странице.Я хочу переключаться между 2 или более точками погоды, скажем, с 5-секундными интервалами.

Я думал, что смогу приспособить что-то вроде этого Как я могу циклически перемещаться по страницам? , но неЛюбая удача.

Исходный код для 3 каналов следующий, который я хотел бы постоянно циклически повторять с интервалом:

<script type="text/javascript" src="http://www.weatherzone.com.au/woys/graphic_current.jsp?postcode=3000"></script>

<script type="text/javascript" src="http://www.weatherzone.com.au/woys/graphic_current.jsp?postcode=3690"></script>

<script type="text/javascript" src="http://www.weatherzone.com.au/woys/graphic_current.jsp?postcode=2000"></script>

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 05 августа 2010

Отличная работа, Крис.Работал абсолютное удовольствие.

0 голосов
/ 30 июля 2010

Поскольку эти виджеты используют document.write (), я бы просто вывел все три на страницу изначально, возможно, в неупорядоченном списке, и просто перебрал бы , показывая и , скрывая их.

Итак, используя разметку следующим образом:

<ul id="cycle">
    <li><script type="text/javascript" src="http://www.weatherzone.com.au/woys/graphic_current.jsp?postcode=3000"></script></li>
    <li><script type="text/javascript" src="http://www.weatherzone.com.au/woys/graphic_current.jsp?postcode=3690"></script></li>
    <li><script type="text/javascript" src="http://www.weatherzone.com.au/woys/graphic_current.jsp?postcode=2000"></script></li>
</ul>

Вы можете использовать jQuery, чтобы сделать что-то вроде этого:

jQuery(function($) {

    var items = $('#cycle li'), // elements to be cycled through
        interval = 2000,        // time between cycles
        i = 0;

    // hides all the elements, except the first one
    items.not(":first").each(function () {$(this).hide()})

    // show, hide elements every "interval" milliseconds
    window.setInterval(function() {
        $(items[ (i==0) ? (items.length - i) - 1 : i - 1 ]).hide()
        $(items[i++]).show();
        if (!items[i]) i = 0;
    }, interval);

});
...