【问题标题】:My self made slider doesn't work我自制的滑块不起作用
【发布时间】:2015-06-17 15:43:41
【问题描述】:

我的自制图像滑块有问题,我收到错误:Uncaught TypeError: Cannot set property '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>

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

凯文。

【问题讨论】:

    标签: javascript html slider


    【解决方案1】:

    您的 html 元素的 id 不是 img,您似乎正在尝试选择标签名称。

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

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

    【讨论】:

    • 谢谢!它现在做了更多的事情。但我现在确实收到此错误:GET file:///C:/xampp/htdocs/Portfolio_WP_22/images_slider/imgNaN.jpg net::ERR_FILE_NOT_FOUND
    • x 在您的区间中未定义,因此 1 + undefined = NaN。
    • @Vaune_X 我该如何解决这个问题?这是我的第一个javascript自制代码,我还是个菜鸟..
    • @Vaune_X 我试着做一个:Var x;在我的 js 文件的顶部。
    • 我假设您正试图通过在每个间隔增加一个计数器来循环浏览可用图像列表,是吗?如果是这样,则从您的函数中删除 x,而是使用 imagecount++ 增加 imagecount;
    【解决方案2】:

    您似乎正试图通过更改图像的来源来遍历图像列表。如果是这样,请参考以下 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 中获取图像

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

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

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

    window.onload = init();
    

    【讨论】:

    • 非常感谢我的朋友!但是问题已经解决了:)
    【解决方案3】:

    正如另一张海报所说,不要使用 Image 作为变量名。

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

    【讨论】:

    • 您好,我已将变量名称更改为其他名称。但我现在收到此错误:file:///C:/xampp/htdocs/Portfolio_WP_22/images_slider/imgNaN.jpg net::ERR_FILE_NOT_FOUND
    • 名称中的NaN 表示您的迭代变量返回的不是数字。查看您的代码,x 定义在哪里?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多