Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 Null不是一个对象,正在生成下拉列表_Javascript - Fatal编程技术网

Javascript Null不是一个对象,正在生成下拉列表

Javascript Null不是一个对象,正在生成下拉列表,javascript,Javascript,我希望我的代码为classddown的每个元素提供一个事件,将slactive类添加到实际的下拉列表中。但是控制台说document.getElementById('sl'+(n+1))为空,因此不是对象。但是,如果我没有在事件中的函数中使用n,这很好,但只适用于第一个元素。元素的名称类似于sl1、sl2、sl3等 ddown = document.getElementsByClassName('ddown'); for(var n=0; n<ddown.length; n++) {

我希望我的代码为class
ddown
的每个元素提供一个事件,将
slactive
类添加到实际的下拉列表中。但是控制台说
document.getElementById('sl'+(n+1))
为空,因此不是对象。但是,如果我没有在事件中的函数中使用
n
,这很好,但只适用于第一个元素。元素的名称类似于sl1、sl2、sl3等

ddown = document.getElementsByClassName('ddown');
for(var n=0; n<ddown.length; n++) {
    ddown[n].addEventListener('mousedown', function(){document.getElementById('sl'+(n+1)).classList.add('slactive');});
    console.log('sl'+(n+1));
}
ddown=document.getElementsByClassName('ddown');

对于(var n=0;n您需要在添加侦听器之前锁定n的值

将您的行(正在添加侦听器)替换为


在添加侦听器之前,需要锁定n的值

将您的行(正在添加侦听器)替换为


您可能会注意到,typeof(null)实际上是“object”。@vothaison我用不同的词编写了控制台输出。好吧,gurvinder372是正确的。您的案例称为“意外关闭”^^^。您可能会注意到,typeof(null)实际上是“object”@vothaison我用不同的词写了控制台输出。好吧,gurvinder372是正确的。你的案例被称为“事故结束”^^。
(function (n){ ddown[n].addEventListener('mousedown', function(){document.getElementById('sl'+(n+1)).classList.add('slactive');}); )(n)