Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 为什么此代码中的console.log返回未定义? var el=$('.container'); var anchors=新数组('jobs'、'portfolio'、'docs'、'interier'、'price'); 对于(var i=0;i_Javascript_Jquery_Arrays_For Loop - Fatal编程技术网

Javascript 为什么此代码中的console.log返回未定义? var el=$('.container'); var anchors=新数组('jobs'、'portfolio'、'docs'、'interier'、'price'); 对于(var i=0;i

Javascript 为什么此代码中的console.log返回未定义? var el=$('.container'); var anchors=新数组('jobs'、'portfolio'、'docs'、'interier'、'price'); 对于(var i=0;i,javascript,jquery,arrays,for-loop,Javascript,Jquery,Arrays,For Loop,当您单击该元素时,i将增加到锚定.长度的值 您的单击处理程序引用了i JavaScript中未解析的属性查找返回未定义的 使用此作为元素的引用会容易得多。否则,请找到按值传递i值的方法,而不是直接引用它。当您单击该元素时,i将增加到锚点的值。长度 您的单击处理程序引用了i JavaScript中未解析的属性查找返回未定义的 使用此作为元素的引用会容易得多。否则,请找到按值传递i值的方法,而不是直接引用该值。未定义的原因是i实际上等于5。看看这个: var el = $('.container')

当您单击该元素时,
i
将增加到
锚定.长度的值

您的单击处理程序引用了
i

JavaScript中未解析的属性查找返回未定义的


使用
作为元素的引用会容易得多。否则,请找到按值传递
i
值的方法,而不是直接引用它。

当您单击该元素时,
i
将增加到
锚点的值。长度

您的单击处理程序引用了
i

JavaScript中未解析的属性查找返回未定义的


使用
作为元素的引用会容易得多。否则,请找到按值传递
i
值的方法,而不是直接引用该值。

未定义的原因是
i
实际上等于
5
。看看这个:

var el = $('.container');
var anchors = new Array('jobs', 'portfolio', 'docs', 'interier', 'price');
for (var i = 0; i < anchors.length; i++) {
    el.on('click', 'a[href$="#'+anchors[i]+'"]', function (e) {
        e.preventDefault();
        console.log(anchors[i]);
        $.scrollTo('a[name="'+anchors[i]+'"]');
    });
};
简单地说,for循环的
i++
在真值测试部分
i<5
位之后执行。因此,当
i
等于
4
时,循环将运行,然后它将递增
i++
,这将
i
的值设置为5,从而使真值测试失败

既然您知道
i
等于
5
,那么当您在
锚定
数组中进行查找时,
锚定[5]
是未定义的

这一点很重要,因为每次触发click事件时,它都会执行
i
的缓存值,即5,反过来,您将始终记录未定义的日志

为了解决这个问题,我们可以像这样为
i
的值创建一个别名

for ( var i = 0; i < 5; i++ ) {
    console.log( i );
}

console.log( i ) // Logs out 5;
var el=$('.container');
var anchors=新数组('jobs'、'portfolio'、'docs'、'interier'、'price');
对于(var i=0;i
未定义的原因是
i
实际上等于
5
。看看这个:

var el = $('.container');
var anchors = new Array('jobs', 'portfolio', 'docs', 'interier', 'price');
for (var i = 0; i < anchors.length; i++) {
    el.on('click', 'a[href$="#'+anchors[i]+'"]', function (e) {
        e.preventDefault();
        console.log(anchors[i]);
        $.scrollTo('a[name="'+anchors[i]+'"]');
    });
};
简单地说,for循环的
i++
在真值测试部分
i<5
位之后执行。因此,当
i
等于
4
时,循环将运行,然后它将递增
i++
,这将
i
的值设置为5,从而使真值测试失败

既然您知道
i
等于
5
,那么当您在
锚定
数组中进行查找时,
锚定[5]
是未定义的

这一点很重要,因为每次触发click事件时,它都会执行
i
的缓存值,即5,反过来,您将始终记录未定义的日志

为了解决这个问题,我们可以像这样为
i
的值创建一个别名

for ( var i = 0; i < 5; i++ ) {
    console.log( i );
}

console.log( i ) // Logs out 5;
var el=$('.container');
var anchors=新数组('jobs'、'portfolio'、'docs'、'interier'、'price');
对于(var i=0;i
变量
i
获得了最后一个循环的值。如果要访问定位点,可以使用以下选项:

var el = $('.container');
var anchors = new Array('jobs', 'portfolio', 'docs', 'interier', 'price');

for (var i = 0; i < anchors.length; i++) {

    // By passing the value to this self executing function,
    // it creates a new instance of the variable
    ( function ( index ) {
        el.on('click', 'a[href$="#'+anchors[index]+'"]', function (e) {
        e.preventDefault();
            console.log(anchors[index]);
            $.scrollTo('a[name="'+anchors[index]+'"]');
        });
    })( i );

};

变量
i
获得了最后一个循环的值。如果要访问定位点,可以使用以下选项:

var el = $('.container');
var anchors = new Array('jobs', 'portfolio', 'docs', 'interier', 'price');

for (var i = 0; i < anchors.length; i++) {

    // By passing the value to this self executing function,
    // it creates a new instance of the variable
    ( function ( index ) {
        el.on('click', 'a[href$="#'+anchors[index]+'"]', function (e) {
        e.preventDefault();
            console.log(anchors[index]);
            $.scrollTo('a[name="'+anchors[index]+'"]');
        });
    })( i );

};

有点离题:初始化数组如var锚=['a','b','c']应该是快速的,可能是错误作用域的重复,我没有在那里定义。有点离题:初始化数组如var锚=['a','b','c']应该是快速的,可能是错误作用域的重复,我没有在那里定义。