Javascript:Timed href更改
现在有一个小小的Javascript问题,我希望下面的图片有一个变量HREF,它是由时间变化触发的 目前,它在某种程度上被触发,但随后被一个URL卡住。这也会影响覆盖在这张照片上的图像。这根本不是目的 任何帮助都会很好。谢谢Javascript:Timed href更改,javascript,jquery,Javascript,Jquery,现在有一个小小的Javascript问题,我希望下面的图片有一个变量HREF,它是由时间变化触发的 目前,它在某种程度上被触发,但随后被一个URL卡住。这也会影响覆盖在这张照片上的图像。这根本不是目的 任何帮助都会很好。谢谢 <div style="position: absolute; left: 0; top: 0; z-index: 100"><a href="[VARIABLE URL]"><img src="[BACKGROUNDIMAGE]" s
<div style="position: absolute; left: 0; top: 0; z-index: 100"><a href="[VARIABLE URL]"><img src="[BACKGROUNDIMAGE]" style="position: absolute top: 0; left: 0;"/></a></div>
<script type="text/JavaScript">
setTimeout(hyperlink1,3000);
setTimeout(hyperlink2,3000);
setTimeout(hyperlink3,3000);
function hyperlink1 () {
$("a").attr("href", "[URL1]")
}
function hyperlink2 () {
$("a").attr("href", "[URL2]")
}
function hyperlink3 () {
$("a").attr("href", "[URL3]")
}
</script>
设置超时(Hyperlink13000);
设置超时(Hyperlink23000);
设置超时(Hyperlink33000);
函数hyperlink1(){
$(“a”).attr(“href”,“[URL1]”)
}
函数hyperlink2(){
$(“a”).attr(“href”,“URL2]”)
}
函数hyperlink3(){
$(“a”).attr(“href”,“[URL3]”)
}
您的选择器“a”
将匹配页面上的所有a
元素。这意味着您的所有三个函数都将更改指向同一URL的所有链接,这三个函数都将在大约三秒钟后启动
您需要让每个选择器特定于它将要更改的链接。您可以使用链接上的id
s,或通过它们的(原始)href
,或使用类
,等等来实现这一点
还要注意的是,您的三个函数几乎完全同时启动。如果这是您的目标,只需使用一个函数即可完成所有更新。如果你的目标是一个火,然后是下一个火,然后是下一个火,要么将它们连成链条:
setTimeout(hyperlink1,3000);
function hyperlink1 () {
$("a").attr("href", "[URL1]")
setTimeout(hyperlink2,3000);
}
function hyperlink2 () {
$("a").attr("href", "[URL2]")
setTimeout(hyperlink3,3000);
}
function hyperlink3 () {
$("a").attr("href", "[URL3]")
}
…或使用遍历数组的单个函数。这取决于实际函数的复杂程度,以及您是重复更新一个链接,还是一次更新一系列链接
如果您只有一个链接,并且您只是尝试重复更新它,那么您可能只需要遍历如下数组:
function update() {
var index = 0,
urls = [
"/path/to/first",
"/path/to/second",
"/path/to/third"
];
setTimeout(tick, 3000);
function tick() {
var href = urls[index++];
if (href) {
$("a").attr("href", href);
if (index < urls.length) {
setTimeout(tick, 3000);
}
}
}
}
update();
<script type="text/JavaScript">
hyperlink(0);
function hyperlink(urlCounter) {
if (urlCounter > 3) {
urlCounter = 0;
}
var url = "";
switch (urlCounter) {
case 0:
url = "[URL 1]";
break;
case 1:
url = "[URL 2]";
break;
case 2:
url = "[URL 3]";
break;
}
setTimeout(function() {
$("a").attr("href", url)
urlCounter++;
hyperlink(urlCounter);
}, 3000);
}
</script>
函数更新(){
var指数=0,
URL=[
“/path/to/first”,
“/path/to/second”,
“/path/to/third”
];
设置超时(勾号3000);
函数tick(){
var href=url[index++];
如果(href){
$(“a”).attr(“href”,href);
if(索引
…但如果它真的只是您列出的三个函数,那么通过
setTimeout
链接的三个函数就简洁明了了。简洁明了是件好事(tm)。我想你应该在3秒钟后将URL从一个URL更改为另一个URL。试试下面
var timer = setInterval(hyperlink,3000);
var ptr = 0;
var urls = ['URL1', 'URL2', 'URL3'];
function hyperlink () {
if (ptr == url.length) {
clearInterval(timer);
ptr = 0;
return;
}
$("a").attr("href", urls[ptr++])
}
所有超时都在同一时间(约三秒)后触发。这使得三个URL函数中的一个“获胜”,因为它将在处理超时和运行函数的很短时间内被称为三个函数中的最后一个。
最后一个函数很可能是其URL将被设置的函数。
如果希望更改是循环的,则应执行以下操作:
function update() {
var index = 0,
urls = [
"/path/to/first",
"/path/to/second",
"/path/to/third"
];
setTimeout(tick, 3000);
function tick() {
var href = urls[index++];
if (href) {
$("a").attr("href", href);
if (index < urls.length) {
setTimeout(tick, 3000);
}
}
}
}
update();
<script type="text/JavaScript">
hyperlink(0);
function hyperlink(urlCounter) {
if (urlCounter > 3) {
urlCounter = 0;
}
var url = "";
switch (urlCounter) {
case 0:
url = "[URL 1]";
break;
case 1:
url = "[URL 2]";
break;
case 2:
url = "[URL 3]";
break;
}
setTimeout(function() {
$("a").attr("href", url)
urlCounter++;
hyperlink(urlCounter);
}, 3000);
}
</script>
超链接(0);
函数超链接(urlCounter){
如果(urlCounter>3){
urlCounter=0;
}
var url=“”;
开关(计数器){
案例0:
url=“[url 1]”;
打破
案例1:
url=“[url 2]”;
打破
案例2:
url=“[url 3]”;
打破
}
setTimeout(函数(){
$(“a”).attr(“href”,url)
urlCounter++;
超链接(URL计数器);
}, 3000);
}
页面的HTML就在问题中-只有一个
元素,因此选择器很好。怎么会有一票领先——更不用说四票了(在我写这篇评论时,我无法理解。@AnthonyGrist:问题中没有一页HTML。这里有一段摘录。简洁明了是件好事,因为我是一个非常有用的人。它工作得很好,我绝对会记下你的回答,但我做不到!!!谢谢TJ!@DaffyKyle:很好,很高兴能帮上忙!:-)