2015-01-13 33 views
0

我在YouTube上查找了本指南,了解如何使用JavaScript创建简单的幻灯片,并且工作完美无瑕。不过,我希望每个图像都链接到特定的href供用户导航。试图更改<a>标记的href

<div id="slider_news"> 
    <a href="news1.html" id="slider_link"><imglink><img src="images/img1.jpg" id="image"></imglink></a> 
    <div class="left_hold"><img onClick="img(-1)" class="left" src="images/arrow_left.png"></div> 
    <div class="right_hold"><img onClick="img(1)" class="right" src="images/arrow_right.png"></div 
</div> 

这是我的HTML,我创建了使用“”标签的图像周围的链接,并赋予它一个ID(=“slider_link”)

var imageCount = 1; 
var total = 5; 
function img(x) { 
    var image = document.getElementById('image'); 
    imageCount = imageCount + x; 
    if(imageCount > total){imageCount = 1;} 
    if(imageCount < 1){imageCount = total;} 
    image.src = "images/img"+ imageCount +".jpg"; 
    var sliderlink = document.getElementById("slider_link"); 
    if(imageCount = 2){sliderlink.href = "news2.html";} //img2.jpg link 
    else if(imageCount = 3){sliderlink.href = "news3.html";} //img3.jpg link 
    else if(imageCount = 4){sliderlink.href = "news4.html";} //img4.jpg link 
    else if(imageCount = 5){sliderlink.href = "news5.html";} //img5.jpg link 
} 

window.setInterval(function imgA() { 
    var image = document.getElementById('image'); 
    imageCount = imageCount + 1; 
    if(imageCount > total){imageCount = 1;} 
    if(imageCount < 1){imageCount = total;} 
    image.src = "images/img"+ imageCount +".jpg"; 
    var sliderlink = document.getElementById("slider_link"); 
    if(imageCount = 2){sliderlink.href = "news2.html";} //img2.jpg link 
    else if(imageCount = 3){sliderlink.href = "news3.html";} //img3.jpg link 
    else if(imageCount = 4){sliderlink.href = "news4.html";} //img4.jpg link 
    else if(imageCount = 5){sliderlink.href = "news5.html";} //img5.jpg link 
},5000); 

这是我的javascript代码,我使用它的ID来标记一个变量,然后添加4个if语句并为正确的图像编号添加正确的页面。我基本上将所有从“var sliderlink”开始的所有内容添加到以前工作的滑块中。

我遇到的问题是,html只会改变一次循环并永远停留在该页面上(news2.html)。而一旦我点击图片并定向到页面,整个幻灯片开始变得更加奇怪,而不是遵循图像顺序等。

对不起,如果代码看起来有点笨重和无组织,但希望你能理解什么我做错了。

+0

有什么'imglink'标签? – Diego

+0

忽略这只是我为使图像在悬停状态下更亮而做出的标记。 'imglink:hover {-webkit-filter:brightness(120%);}'。我认为它不应该是一个问题? –

+0

它似乎并不如此。但读一些[理由为什么不这样做](http://stackoverflow.com/questions/16867332/html5-why-not-use-my-own-arbitrary-tag-names)。 – Diego

回答

3

您的ifs使用=运算符而不是=====。试试这个:

if(imageCount === 2){sliderlink.href = "news2.html";} //img2.jpg link 
else if(imageCount === 3){sliderlink.href = "news3.html";} //img3.jpg link 
else if(imageCount === 4){sliderlink.href = "news4.html";} //img4.jpg link 
else if(imageCount === 5){sliderlink.href = "news5.html";} //img5.jpg link 

此外,在setInterval叫你不应该试图说出传递给它的功能。 尝试:的

window.setInterval(function() { 

代替

window.setInterval(function imgA() { 
+0

呵呵,实际上是操作员哈哈:P还没有完成java/javascript几个月,我仍然只知道非常基本的,所以我完全忘记了.....非常感谢! 在我的HTML dont我需要设置''它的工作,因此需要一个名称? –

+0

不,“window.setInterval”调用需要在加载时执行。一旦完成,您传递的匿名函数将定期执行。 – Diego

+0

我该如何执行?同样的方法,只需切换名称? –