gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:11:18 26 4
gpt4 key购买 nike

所以,长话短说,我正在尝试为响应式 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com