изменение URL iframe каждые 20 секунд не работает с JavaScript - PullRequest
2 голосов
/ 18 октября 2011

У меня есть iframe, который я хочу обновлять каждые 20 секунд. Таким образом, в основном, URL-адрес iframe должен измениться на новый из массива, и он обновляется каждые 20 секунд, но мой код, похоже, не работает.

var Uni = {
    init: function () {
        this.refresh();
    },

    refresh: function () {
        var urlArr = [
            'http://www.smashingmagazine.com/learning-javascript-essentials-guidelines-tutorials/',
            'http://stephendnicholas.com/archives/310',
            'http://msdn.microsoft.com/en-us/scriptjunkie/ff696765', 
            'http://www.jquery4u.com/jquery-functions/jquery-each-examples/'
        ],

        iframeSrc = document.querySelector('#uni iframe').src;

        for (var i = 0, max = urlArr.length; i < max; i++) {
            setInterval(function(){
                iframeSrc = urlArr[i];
            }, 20000);
        }   
    }
}

Uni.init();

HTML:

<body id="uni">
   <iframe src="http://www.smashingmagazine.com/learning-javascript-essentials-guidelines-tutorials/">
   You browser doesn't support iframes, please update it.
   </iframe>
</body>

Пожалуйста, помогите.

Ответы [ 2 ]

3 голосов
/ 18 октября 2011

Проверьте последнюю строку вашего urlArr[] объявления:

], // <- the comma should be a semicolon!

Спасибо @AndyE за подсказку.

Обновление: Решение + рабочая скрипка

var Uni = {
    interval_holder : false,
    urlArr : [],

    init: function (args) {
        if (args) {
            for (url in args) { this.addUrl(args[url]); }
        };
        this.refresh();
        this.interval_holder = setInterval('myuni.refresh()', 20000);
        return this;
    },

    refresh: function () {
        iframeObj = document.querySelector('#uni iframe');
        this.urlArr.unshift(iframeObj.src);
        iframeObj.src = this.urlArr.pop();
        return this;
    },

    stop : function () {
        clearInterval(this.interval_holder);
        return this;
    },

    addUrl : function(url) {
        this.urlArr.push(url);
        return this;
    },

    removeUrl : function(url) {
        this.urlArr.splice(this.urlArr.indexOf(url),1);
        return this;
    }
};

window.myuni = Uni.init([
    'http://www.smashingmagazine.com/learning-javascript-essentials-guidelines-tutorials/',
    'http://stephendnicholas.com/archives/310',
    'http://msdn.microsoft.com/en-us/scriptjunkie/ff696765', 
    'http://www.jquery4u.com/jquery-functions/jquery-each-examples/'
]);
2 голосов
/ 18 октября 2011

Атрибут iframe src является только строкой, а не указателем. Изменение не имеет никакого эффекта.

Вместо этого:

iframeObj = document.querySelector('#uni iframe');
for (var i = 0, max = urlArr.length; i < max; i++) {
    setInterval(function(){
        iframeObj.src = urlArr[i];
    }, 20000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...