Javascript 无法获取';风格';覆盖style.display属性时未定义或空引用的

Javascript 无法获取';风格';覆盖style.display属性时未定义或空引用的,javascript,html,hta,Javascript,Html,Hta,但它并没有在这条线上抛出错误 "slides[slideIndex-1].style.display = "block";" 我在这里看到了一些有趣的事情: 1) 看起来您正在混合应用程序逻辑(HTML)和行为逻辑(JavaScript)。你应该考虑把这个JS代码放进一个文件中,并将它命名为 ,直接放置在 标签上。这将在页面加载后运行代码,因此元素将在脚本运行之前呈现。如果当前脚本位于用id=mySlides呈现元素的代码之上,则它可能返回未定义。这样做将使您的代码更模块化,更易于阅读和维护

但它并没有在这条线上抛出错误

"slides[slideIndex-1].style.display = "block";"

我在这里看到了一些有趣的事情:

1) 看起来您正在混合应用程序逻辑(HTML)和行为逻辑(JavaScript)。你应该考虑把这个JS代码放进一个文件中,并将它命名为<代码> <代码>,直接放置在<代码> <代码>标签上。这将在页面加载后运行代码,因此元素将在脚本运行之前呈现。如果当前脚本位于用
id=mySlides
呈现元素的代码之上,则它可能返回未定义。这样做将使您的代码更模块化,更易于阅读和维护


2) 我以前从未见过这种语法:
document.getElementsByClassName(“col”,“div”,document.getElementById(“mySlides”)。我会认为这是高度怀疑的,因为我没有看到任何提及:我建议您重构那里的代码。将其更改为
document.querySelectorAll('.col.div,#mySlides')
(假设您有一个名为div的类。如果您试图查找所有
标记,请删除句点)


3) 如果您看到的是未定义的,slides.length可能是0,在我看来,它可能与getElementById的使用有关。尝试在
var slides=
part:
console.log(“找到的元素数:“+slides.length”)的正下方添加此项

如果
getElementsByClassName
返回一个空的HTML集合,那么这里的代码看起来会抛出一个错误。幻灯片的
长度是多少?检查salides.length是否为0。您正在将slideIndex重置为1。这可能会导致未定义的
文档。GetElementsByCassName(“col”,“div”,document.getElementById(“mySlides”))
似乎是错误的。我将大小设置如下:/*幻灯片显示容器*/.幻灯片显示容器{最大宽度:1000px;位置:相对;边距:自动;}
"slides[slideIndex-1].style.display = "block";"
slides[i].style.display = "none";