Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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-非常简单的代码,但函数尚未定义_Javascript - Fatal编程技术网

javascript-非常简单的代码,但函数尚未定义

javascript-非常简单的代码,但函数尚未定义,javascript,Javascript,我已经四处寻找了一段时间(大概花了一个小时搜索),但我找不到一个明确的答案。据我所知,我没有使用jQuery或AJAX,只使用普通JavaScript。下面是它的样子: vari; var displayimg=document.getElementsById(“displayimg”);//我不知道我在这里干什么。我认为onclick事件可能在错误的范围内,所以我尝试用JavaScript来设置它。它不起作用。 var imgb=document.getElementsByClassName

我已经四处寻找了一段时间(大概花了一个小时搜索),但我找不到一个明确的答案。据我所知,我没有使用jQuery或AJAX,只使用普通JavaScript。下面是它的样子:

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更新了答案。