我自制的滑块不起作用

My self made slider doesn't work

我的自制图像滑块有问题,出现错误:未捕获类型错误:无法设置 属性 'src' of null

编辑:我将所有图像命名为:img1、img2、img3 等,扩展名为 .jpg

这是我的 javascript 代码:

     // JavaScript Document
var imagecount = 1;
var total = 3;


window.setInterval(function slideA(x) 
{
    var Image = document.getElementById('img');
    imagecount = imagecount + x;
    if(imagecount > total) { imagecount = 1; }
    if(imagecount < 1) { imagecount = total; }
    Image.src = "images_slider/img" + imagecount + ".jpeg";
}, 5000);

function init() 
{
    slideA();
}

window.onload = init;


<div id="LandingImage">
    <img src="../images/landingimage.png" alt="LandingImage" width="100%"         height="100%"  />  
    </div>

有人可以帮我解决这个问题吗? 谢谢!

凯文。

您的 html 元素没有 img 的 ID,您似乎在尝试 select 标签名称。

我还建议不要使用 Image 作为变量名,因为 Image 是 JavaScript 中的一个对象名。

<img src="../images/landingimage.png" alt="LandingImage" width="100%" height="100%" id="img" /> <!-- id at the end, was missing -->  

正如另一位发帖人提到的,不要使用 Image 作为变量名。

要访问元素的 src 属性,请使用 element.setAttribute('src', 'insert src here') 而不是 element.src

您似乎正在尝试通过更改图像源来循环访问图像列表。如果是,请参考以下JS fiddle作为示例:

https://jsfiddle.net/hqq1k2Lk/3/

我做了一些改动,让我们一起来看看吧。

// JavaScript Document
var imagecount = 1;
var total = 3;


function slideA()
{
    //slideA starts the interval
    window.setInterval(function(){
        var myImage = document.getElementById('LandingImage');
        imagecount++;
        if(imagecount > total) { imagecount = 1; }
        if(imagecount < 1) { imagecount = total; }
        myImage.src = "images_slider/img" + imagecount + ".jpeg";            
    }, 5000);
}

function init() 
{
    slideA();
}

window.onload = init();

首先,我将您的函数调用 slideA 移到了区间之外。因此调用 slideA(); 将开始间隔。

接下来,我将您的 ID LandingImage 移动到 img 元素本身,因此我们可以使用 document.getElementById('LandingImage');

从 DOM 获取图像

由于您需要跟踪您使用的图像,我选择使用图像计数作为您的计数器。您可以使用 ++ 将数字递增 1,例如 imagecount++;

正如其他人所指出的,Image 是 Javascript 中受保护的对象名称,因此我将您的变量重命名为 myImage

最后,为了启动整个过程,我向您的 window onload 事件添加了一个函数调用。每当你想调用一个函数时,记得使用 ()

window.onload = init();