javascript-非常简单的代码,但函数尚未定义
我已经四处寻找了一段时间(大概花了一个小时搜索),但我找不到一个明确的答案。据我所知,我没有使用jQuery或AJAX,只使用普通JavaScript。下面是它的样子:javascript-非常简单的代码,但函数尚未定义,javascript,Javascript,我已经四处寻找了一段时间(大概花了一个小时搜索),但我找不到一个明确的答案。据我所知,我没有使用jQuery或AJAX,只使用普通JavaScript。下面是它的样子: vari; var displayimg=document.getElementsById(“displayimg”);//我不知道我在这里干什么。我认为onclick事件可能在错误的范围内,所以我尝试用JavaScript来设置它。它不起作用。 var imgb=document.getElementsByClassName
vari;
var displayimg=document.getElementsById(“displayimg”);//我不知道我在这里干什么。我认为onclick事件可能在错误的范围内,所以我尝试用JavaScript来设置它。它不起作用。
var imgb=document.getElementsByClassName(“imgb”);
对于(i=0;imaxIndex){
n=最小指数;
}//如果数字超过3,返回到1(顶部)
如果(n
您已经编写了
.getElementsById()
,但是正确的名称是.getElementById()
,并且您的单击
回调函数的定义不正确--按照您的方式,该函数将立即被调用。它需要包装在另一个函数中
另外,不要在多个回调中使用相同的循环计数器(i
),因为将形成闭包,这将导致在多个函数执行中共享i
时出现问题
除此之外,通常最好不要使用getElementsByClassName()
,而是使用.querySelectorAll()
,因为前者返回一个“活动节点列表”,它可能比后者更占用资源。此外,如果将.querySelectorAll()
返回的节点列表转换为数组,则可以利用Array.forEach()
方法,该方法允许在数组上循环,而不需要循环计数器
var displayimg=document.getElementById(“displayimg”);
//如果我们将这里返回的节点列表转换成一个适当的数组,那么就不需要循环计数器
var imgb=Array.prototype.slice.call(document.queryselectoral(“.imgb”);
imgb.forEach(函数(el,idx){
el.addEventListener(“单击”,函数(){
固定滑块(idx);
});
console.log(“成功”);
});
var最大指数;
var minIndex;
函数startSlide(max,min){//此函数来自html正文onload。
“严格使用”;
最大指数=最大值;
minIndex=最小值;
幻灯片(1);
}
函数setSlide(n){//此函数来自.imgb按钮。
“严格使用”;
幻灯片(n);
控制台日志(“OK”);
}
功能演示幻灯片(n){
“严格使用”;
如果(n>maxIndex){
n=最小指数;
}//如果数字超过3,返回到1(顶部)
如果(n
它是document.getElementById
而不是document.getElementsById
。并且也是(“单击”,设置滑块(i))代码>“只是把它们混在一起,希望它能起作用”,现在你想让我们修复它?你到底试过什么?你的调试器怎么说?您还没有列出尝试解决此问题所采取的任何步骤。这仍然是错误的。你有臭名昭著的for循环。多个事物使用相同的全局变量i
,这仍然是错误的。您在所有单击处理程序中重复使用相同的i
。@epascarello更新了答案。