Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript控制台:未捕获类型错误:无法读取属性';风格';在displaynone处为null_Javascript_Null - Fatal编程技术网

Javascript控制台:未捕获类型错误:无法读取属性';风格';在displaynone处为null

Javascript控制台:未捕获类型错误:无法读取属性';风格';在displaynone处为null,javascript,null,Javascript,Null,我正在编写一个简单的javascript滑块,它应该显示一张幻灯片,然后在5秒后显示:该幻灯片无,然后显示下一张幻灯片。我收到控制台错误“UncaughtTypeError:无法在displaynone读取null的属性'style'。下面是slider7.js的内容: window.onload = function () { var imgid = []; var numberOfSlides = document.getElementById("slide-container").ch

我正在编写一个简单的javascript滑块,它应该显示一张幻灯片,然后在5秒后显示:该幻灯片无,然后显示下一张幻灯片。我收到控制台错误“UncaughtTypeError:无法在displaynone读取null的属性'style'。下面是slider7.js的内容:

window.onload = function () {

var imgid = [];

var numberOfSlides = document.getElementById("slide-container").childElementCount;

console.log("total slide count is: " + numberOfSlides);

for (i = 1; i <= numberOfSlides; i++) {
    console.log("here's the value of i: " + i);
    imgid.push("img-" + i);
}

console.log("The full contents of the array are " + imgid);


function displaynone() {
    document.getElementById(imgid[j]).style.display = "none";
}

for (j = 0; j < numberOfSlides; j++) {
    console.log("identify each image id in turn: " + imgid[j]);

    document.getElementById(imgid[j]).style.display = "block";

        window.setTimeout(displaynone, 5000);
    }

};
观察到以下代码行仅在包装到window.setTimeout函数时生成控制台错误:

document.getElementById(imgid[j]).style.display = "none";

如果我从函数中删除这一行,并简单地将其放在包含“display=“block”的行下面,它会将内联显示设置为none,但不会有任何时间延迟。谢谢你的见解

只需检查变量j 它在displaynone函数中未定义。 使用闭包

+增加


或者,您可以将变量j声明为全局变量,而无需使用windows.onload。请尝试以这种方式执行js函数

<body onload="your function">

使用css隐藏初始阶段的所有图像

document.getElementById(imgid[j]).style.display = "none";
<body onload="your function">