我有这个功能:
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在顶部的函数内本地声明,在每个循环中处理,之后我尝试提醒它。但是,变量返回undefined。元素上的css更改有效,因此变量确实有一个值,但由于某种原因,当每个循环结束时它变为未定义。这有什么问题?
答案 0 :(得分:1)
在进入循环之前打印currentCellNumberElement,并为其分配值。
我认为你这样做了:
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;
}
});
alert(currentCellNumberElement);
}, 100);
}
但是就像JJJ所说:这里有完整的解释:Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference