javascript - 试图改变 <a> 标签的 href

标签 javascript html css slideshow

我在 youtube 上查阅了这个指南,了解如何使用 javascript 创建简单的幻灯片放映,它运行得非常完美。但是,我希望每张图片都链接到特定的 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,我使用“a”标签在图像周围创建了一个链接并给它一个 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 从 a 标签中创建一个变量,然后只需添加 4 个 else if 语句并为正确的图像编号添加正确的页面。我基本上添加了从“var sliderlink”开始的所有内容到以前工作的 slider 。

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

如果代码看起来有点笨拙和杂乱无章,我很抱歉,但希望你能理解我做错了什么。

最佳答案

您的 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() {

关于javascript - 试图改变 <a> 标签的 href,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27913805/

相关文章:

javascript - 从 Javascript 对象循环动态创建的表单。如何将数据保存回对象

html - Nav 使字体变粗

javascript - 关于 Instagram 应用程序内浏览器裁剪的任何解决方法?

javascript - jQuery用一个元素替换多个元素

javascript - 在 </body> 之前运行代码,而不是等待 DOM Ready/DOMcontentloaded 事件

javascript - Ajax将javascript变量发送到php

html - 使边框消失的 CSS 过渡(边框出现在 :active)

jquery - 如何通过 jQuery 脚本查看我的 HTML 发生的变化?

html - 创建一个导航栏,使用完整空间(css)的元素

javascript - AngularJS 限制输入数字不起作用