我正在试图弄清楚当我从列表中随机刷新页面时,如何制作一个每次更改的锚标记。
说我有这个清单
<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相关的话题。
请告诉我我该怎么做。
由于
答案 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>
<强>击穿强>
创建一个包含三个字符串的数组文字:
var phrases = [
'This is the first one',
'This is the second one',
'This is the third one'
];
在页面上获取所有NodeList的script elements(因为页面已加载到此时,因此所有脚本在此之前包含此脚本):
var scripts = document.getElementsByTagName('script');
将最后一个脚本存储在该列表中(IE。此脚本元素)this_script
:
var this_script = scripts[scripts.length - 1];
我会将下一行分成更小的部分
Math.random在0
(包含)和1
之间提供Number(不包括)。将它乘以3会在0
(包含)和3
(不包含)和Math.floor之间进行均匀分布。这给出了0
和2
之间的随机整数。如果向数组中添加元素,它将更新,因为它在计算中使用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_child
和old_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>';
?>