2015-02-10 122 views
0

我想(沒有太多的成功)創建一個包含幻燈片被加載到iframe的數組。其中一個框架(/Events.php)使用PHP查詢WordPress數據庫並顯示隨機選擇的1個帖子。此幻燈片需要顯示不同隨機帖子每次數組循環通過。追加不同的隨機數到URL在每個循環的JavaScript數組

我在他們此刻是代碼...

<script type="text/javascript"> 

var frames = Array(
    'http://www.example.com/Slide01.php', 5, 
    'http://www.example.com/Slide02.php', 5, 
    getRandomUrl(), 5, 
    'http://www.example.com/Slide04.php', 5 
    ); 

var i = 0, len = frames.length; 

function getRandomUrl() 
{ 
    return "http://www.example.com/Events.php?=" + (new Date().getTime()); 
} 

function ChangeSrc() 
{ 
    if (i >= len) { i = 0; } // start over 
    document.getElementById('myiframe').src = frames[i++]; 
    setTimeout('ChangeSrc()', (frames[i++]*1000)); 
} 
window.onload = ChangeSrc; 
</script> 

唯一的麻煩是,每次/Events.php顯示它已追加到同一號碼,以便因此顯示了相同的職位在每個循環。

我需要在每個循環的幻燈片上附加一個不同的編號,以便每次都會生成不同的內容。

我開始認爲我完全以錯誤的方式接近這一點,所以任何幫助或指針在正確的方向將不勝感激!

乾杯, 馬克。

回答

0

的問題是,你只叫getRandomUrl()一次是您在定義數組,這意味着該值將始終是相同的作爲其唯一的一次返回。

一個解決辦法是對函數本身的存儲陣列中,像這樣:

var frames = Array(
    'http://www.example.com/Slide01.php', 5, 
    'http://www.example.com/Slide02.php', 5, 
    getRandomUrl, 5, 
    'http://www.example.com/Slide04.php', 5 
    ); 

然後調用它在ChangeSrc()如果它的功能

function ChangeSrc() 
{ 
    if (i >= len) { i = 0; } // start over 
    var frame = frames[i++], 
     isFnc = typeof(frame) == "function"; 
    if(isFnc){ 
     frame = frame(); 
    } 
    document.getElementById('myiframe').src = frame; 
    setTimeout(function(){ 
     ChangeSrc() 
    }, frames[i++]*1000); 
} 

http://jsfiddle.net/redgg6pq/

+1

這工作得很好!頭號人物!非常感謝你! :)爲我節省了幾個小時(和幾個小時)的更多頭部劃痕! – 2015-02-10 09:42:11

0

提示將是你只調用'getRandomUrl'一次,因此它爲什麼總是相同的圖像。每次進入循環時都要調用它。

我建議從靜態數組中刪除它,並在循環中調用它 - 這是否有意義? :)

HTH

+0

感謝回覆!不知道你的意思是什麼(JS不是我的最強點!)你的意思是在我的Wordpress循環實際上在/Events.php頁面? – 2015-02-10 09:33:20