javascript - 变量在循环中显示为未定义,即使它是在循环之前定义的

标签 javascript jquery variables

所以,长话短说,我正在尝试为响应式 slider 编写一个小脚本,并且正在尝试找到文本最多的幻灯片,以便我知道哪一张是最大的幻灯片。然后,我获取该幻灯片的高度,并将 slider 容器高度调整为幻灯片的高度。我创建了一个在 $(document).ready()$(window).resize() 上运行的函数。但是,我对其中一个变量有疑问。

问题是这样的:如您所见,我在开始循环播放幻灯片之前定义了一个名为 laSTLength 的变量,并将其默认值设置为零。然后,我检查上一张幻灯片的 laSTLength 是否大于当前幻灯片的 totallength,如果不大于,我更改 laSTLength 的值totallength 的值。

但是,我注意到条件语句根本没有返回任何内容,因此当我执行 console.log(laSTLength) 时,我注意到该变量显示为未定义,尽管我之前定义了它循环。我尝试通过复制提供给 console.log 的参数并替换该变量的名称来确保名称正确。

这是函数:

function changeSlider(numslides)
{
    var id_current = 1;
    var lastlength = 0;
    var lastlength_owner = 0;
    $(".slide").each(function()
    {
        var texth2 = $(this).children("h1").text();
        var texth3 = $(this).children("h3").text();

        var totallength = texth2.length + texth3.length;

        console.log(lastlength);
        console.log(totallength);

        if ( (lastlength > totallength) && (id_current == numslides) )
        {
            console.log(totallength);
            changeSize(lastlength_owner);
        }

        if ( (lastlength < totallength) && (id_current == numslides) )
        {
            console.log(totallength);
            $(".slider").css('height', $(this).height());
        }

        if ( (lastlength < totallength) && (id_current !== numslides) )
        {
            console.log(totallength);
            var lastlength = totallength;
            var lastlength_owner = $(this).attr('slide_id');
        }

        id_current++;
    }); 
}

有人知道为什么会发生这种情况吗?

提前致谢。

最佳答案

这是因为您稍后重新声明了 laSTLengthlaSTLength_owner:

var lastlength = totallength;
var lastlength_owner = $(this).attr('slide_id');

这些声明隐藏了函数外部的var变量。

只需删除此处的 var 关键字即可。

关于javascript - 变量在循环中显示为未定义,即使它是在循环之前定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678177/

相关文章:

javascript - 如何为jQuery滑动侧边菜单制作子菜单?

arrays - 在函数定义和变量赋值中使用 "hash"

Javascript 幻灯片中心?

javascript - Angular : Why is my div not showing/hiding with ng-show/ng-hide?

javascript - jQuery 添加标记

javascript - 自动从上到下滚动页面,然后返回(并重复)

javascript - 在二维数组中查找数组的索引?

javascript - 什么时候用??和 ?作为 node-mysql 中用于构建查询的占位符?

php - array_intersect 可变数量的数组

c# - 将几个数字与变量 int 作为 IF 参数进行比较