Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使我的横幅定期刷新到另一个随机横幅?_Javascript_Php_Html_Vbulletin - Fatal编程技术网

Javascript 如何使我的横幅定期刷新到另一个随机横幅?

Javascript 如何使我的横幅定期刷新到另一个随机横幅?,javascript,php,html,vbulletin,Javascript,Php,Html,Vbulletin,我有一个网站,在页面加载时显示广告横幅。我想它也改变,而有人正在查看该网站,可能在几分钟后 这是我当前使用PHP显示初始横幅的代码: $path = '/images/adbanners/'; $banners = array( array( 'src' => 'look.jpg', 'href' => 'http://www.example.com/look'), array( 'src' => 'see.jpg', 'href' => 'http://www

我有一个网站,在页面加载时显示广告横幅。我想它也改变,而有人正在查看该网站,可能在几分钟后

这是我当前使用PHP显示初始横幅的代码:

$path = '/images/adbanners/'; 
$banners = array( 
array( 'src' => 'look.jpg', 
'href' => 'http://www.example.com/look'), 
array( 'src' => 'see.jpg', 
'href' => 'http://www.example.com/see'), 
array( 'src' => 'horse.jpg',
'href' => 'http://www.example.com'), 
array( 'src' => 'scg.png', 
'href' => 'https://www.example.com/scg/'), 
array( 'src' => 'karen.png', 
'href' => 'http://www.example.com/'karen), 
); 

$rnd = mt_rand(0,count($banners)-1); // Pick a random array index.  They start with 0, so you have to -1. 
$href = $banners[$rnd]['href'];  // Link HREF 
$src = $path.$banners[$rnd]['src']; // Image source 
$randombanner = '<a href="'.$href.'" target="_blank" alt="example.com Sponsor!" title="example.com Sponsor!"><img border="0" src="'.$src.'" /></a>'; 
vB_Template::preRegister('navbar', array('randombanner' => $randombanner));  
$path='/images/adbanner/;
$banners=数组(
数组('src'=>'look.jpg',
'href'=>'http://www.example.com/look'), 
数组('src'=>'see.jpg',
'href'=>'http://www.example.com/see'), 
数组('src'=>'horse.jpg',
'href'=>'http://www.example.com'), 
数组('src'=>'scg.png',
'href'=>'https://www.example.com/scg/'), 
数组('src'=>'karen.png',
'href'=>'http://www.example.com/"卡伦",,
); 
$rnd=mt_rand(0,计数($banner)-1);//选择一个随机数组索引。它们以0开头,所以你必须-1。
$href=$banner[$rnd]['href'];//链接HREF
$src=$path.$banner[$rnd]['src'];//图像源
$banner='';
vB_模板::预注册('navbar',数组('randombanner'=>$randombanner));

我有一个想法,这可以通过使用JavaScript实现,但不知道从哪里开始。我不希望向站点添加jQuery之类的库,因为它还没有用于任何用途。

PHP是一种服务器端语言,它的工作在页面加载时完成。然而,htmlgoodies等网站提供了一些可靠的教程,可以帮助您了解所需内容


请看本教程:

使用超时。一段时间的文档在

基本上,您可以设置一个超时函数来调用您的函数,该函数在设置的毫秒数之后更改横幅

window.setTimeout(function() {
    // call to function to rotate or change banner
}, ms);

这有用吗?或者您正在寻找JS中的完整示例。

我建议将其他广告列表作为JSON发送,然后使用JS交换。您可以使用
setInterval
来实现这一点。如果没有jQuery,这就有点棘手了,您在站点上还有其他库吗

对于PHP,添加

$ads_json=json_encode($banners);
下面是您声明$banners数组的位置

将您的banner元素更改为具有ID,以便我们可以通过JS轻松访问它

$randombanner = '<a id="sponsor_banner" href="'.$href.'" target="_blank" alt="example.com Sponsor!" title="example.com Sponsor!"><img border="0" src="'.$src.'" /></a>'; 
$randombanner='';
然后添加到$randombanner html

<script>
    var ads='.$ads_json.';
    function swap_ad(){
        var ad_el=document.getElementById("sponsor_banner");
        var img=ad_el.getElementsByTagName('img')[0];
        var random_ad=ads[Math.floor(Math.random()*items.length)];
        ad_el.href=random_ad["href"];
        img.src='.$path.'random_ad["src"];
        };
    window.setInterval(swap_ad,90000000);
</script>

var ads='.$ads_json';
函数交换_ad(){
var ad_el=document.getElementById(“赞助商旗帜”);
var img=ad_el.getElementsByTagName('img')[0];
var random_ad=ads[Math.floor(Math.random()*items.length)];
ad_el.href=随机广告[“href”];
img.src='.$path.'random_ad[“src”];
};
窗口设置间隔(交换间隔,90000000);

把剧本放在头上就好了。但是,将其放在元素旁边会起作用,但不确定vBulletin的限制。

如果要每5分钟加载一个新的iframe,只需使用:

这将要求您在html页面上的横幅周围的
标记中添加
id=“bannerId”
。您可以不用手动添加URL,也只需通过PHP注入URL,通过类似这样的方式定义全局
广告
变量:

window.adverts = [
    <?php
        echo json_encode($banners)
    ?>
];
window.adverts=[
];

这会自动将
$banner
变量中的所有内容放入JavaScript
adverts
变量。

JS中类似于
setInterval
的代码会起作用。我查看了文档中的设置超时……这不会只改变一次?@Misha可能是指至
setInterval
,它是
setTimeout
的重复版本。你可以查看我的答案或JAL的,以查看更详细的答案,包括
setInterval
。是的,好的,我的坏的,我确实想把setInterval放进去,但我想我在考虑之前就已经打字了。设置时间间隔计时器的方法是window.setInterval。setTimeout只触发一次。很好看的家伙。嗯,看起来你和我贴的答案几乎完全一样。。。有趣的是:P@joetje590可能是因为它就是这样做的!但是我建议不要使用
元素。children
,尤其是对于广告等基本功能。根据,IE(还有谁)直到第9版才支持此功能。浏览器对
Element.getElementsById('img')
的支持是。@Joetje50天哪,我明白了,我不喜欢DOM方法。谢谢你的建议。在你的答案和乔伊的答案之间,我找到了答案。如果我有足够的代表,我会投你一票。谢谢你的帮助!!在你的答案和日航的答案之间,我找到了答案。如果我有足够的代表,我会投你一票。谢谢你的帮助!!没问题!顺便说一句,作为提问者,你可以通过分数下方的复选标记按钮将一个答案(你最喜欢的答案)标记为已接受。
window.adverts = [
    <?php
        echo json_encode($banners)
    ?>
];