【发布时间】:2017-04-12 11:01:34
【问题描述】:
我有这个功能:
getKeyboardStartingPoint() {
let currentCellNumberElement;
window.setTimeout(function() {
$cells.each(function() {
currentCellNumberElement = $(this).find('[data-number]');
if (currentCellNumberElement.text().trim().length === 0) {
currentCellNumberElement.css('background-color', 'orange');
return false;
}
});
}, 100);
return currentCellNumberElement;
}
变量 currentCellNumberElement 在顶部的函数中本地声明,在每个循环中处理,然后我尝试提醒它。但是,该变量返回未定义。元素上的 css 更改有效,因此变量确实有一个值,但由于某种原因,当每个循环结束时它变得未定义。这里有什么问题?
【问题讨论】:
-
我认为基本问题可能是 return false 是从 setTimeout 返回的,所以它最终无处可去,也没有 else 条件,所以函数将返回 false 或未定义。此外,警报发生在 setTimeout 完成之前,因此将始终未定义。
-
@user3094755 return false 停止
$.each循环,所以这部分没问题。 -
在超时时间内返回变量也不起作用(未定义)。警报或控制台记录超时内的变量确实有效。但是,我需要退货。
-
你不能。该函数在超时解决之前很久就结束了。