每次页面刷新时随机链接?

时间:2012-06-01 01:38:37

标签: javascript html random logic

我正在试图弄清楚当我从列表中随机刷新页面时,如何制作一个每次更改的锚标记。

说我有这个清单

<a href="http://testpage.com/">This is the first one</a>
<a href="http://testpage.com/">This is the second one</a>
<a href="http://testpage.com/">This is the third one</a>

这是第一个 这是第二个 这是第三个

就像Adsense所拥有的链接单元广告一样,但我只是想让它做一个简单的随机操作,不做任何额外的工作,比如检查是否与adsense相关的话题。

请告诉我我该怎么做。

由于

2 个答案:

答案 0 :(得分:2)

<a href="http://testpage.com/">
<script type="text/javascript">
    // This script will replace itself with a random one of these phrases
    var phrases = [
        'This is the first one',
        'This is the second one',
        'This is the third one'
    ];

    var scripts = document.getElementsByTagName('script');
    var this_script = scripts[scripts.length - 1];
    this_script.parentNode.replaceChild(document.createTextNode(phrases[Math.floor(Math.random()*phrases.length)]), this_script);
</script>
</a>​

JSFiddle


<强>击穿

创建一个包含三个字符串的数组文字:

var phrases = [
    'This is the first one',
    'This is the second one',
    'This is the third one'
];

在页面上获取所有NodeListscript elements(因为页面已加载到此时,因此所有脚本在此之前包含此脚本):

var scripts = document.getElementsByTagName('script');

将最后一个脚本存储在该列表中(IE。此脚本元素)this_script

var this_script = scripts[scripts.length - 1];

我会将下一行分成更小的部分 Math.random0(包含)和1之间提供Number(不包括)。将它乘以3会在0(包含)和3(不包含)和Math.floor之间进行均匀分布。这给出了02之间的随机整数。如果向数组中添加元素,它将更新,因为它在计算中使用phrase.length,而不是文字3:

Math.floor(Math.random()*phrases.length)

document.createTextNode创建并返回一个实现Text接口的新Node,它的数据就是传入的值。在这种情况下,它是短语数组中的随机元素:

document.createTextNode(phrases[Math.floor(Math.random()*phrases.length)])

Node.parentNode是自解释的,在这种情况下,script元素的父元素将是HTMLAnchorElement(由树中脚本上方的<a>标记表示)。 Node.replaceChild有两个参数,new_childold_child。我们传入了new child的新文本节点,以及old_child的此脚本,它导致此脚本从DOM中删除并替换为文本节点:

this_script.parentNode.replaceChild(document.createTextNode(phrases[Math.floor(Math.random()*phrases.length)]), this_script);

答案 1 :(得分:1)

你可以像这样使用php:

<?php $linkName = mt_rand(1,3);
 if ($linkName == 1) echo '<a href="http://testpage.com/">This is the first one</a>';
 if ($linkName == 2) echo '<a href="http://testpage.com/">This is the second one</a>';
 if ($linkName == 3) echo '<a href="http://testpage.com/">This is the third one</a>';
?>