所以,长话短说,我正在尝试为响应式 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++;
});
}
有人知道为什么会发生这种情况吗?
提前致谢。
最佳答案
这是因为您稍后重新声明了 laSTLength
和 laSTLength_owner
:
var lastlength = totallength;
var lastlength_owner = $(this).attr('slide_id');
这些声明隐藏了函数外部的var
变量。
只需删除此处的 var
关键字即可。
关于javascript - 变量在循环中显示为未定义,即使它是在循环之前定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678177/