Javascript 在关闭之前强制执行行
我有以下代码Javascript 在关闭之前强制执行行,javascript,closures,Javascript,Closures,我有以下代码 (function() { var weather = new Weather(); var input = document.getElementById("inputCity"); var weatherHolder = document.getElementsByClassName("weather"); var loading = document.getElementById("loadingSign"); input.focus
(function() {
var weather = new Weather();
var input = document.getElementById("inputCity");
var weatherHolder = document.getElementsByClassName("weather");
var loading = document.getElementById("loadingSign");
input.focus();
input.onkeyup = function(e) {
if (e.keyCode == 13 && input.value != "") {
loading.classList.remove("hidden");
weather.getWeather(input.value, function (returnValue) {
for (iter in returnValue) {
weatherHolder[iter].classList.remove('hidden');
document.getElementById("weather" + (parseInt(iter) + 1)).innerHTML = returnValue[iter].date;
}
});
loading.classList.add("hidden");
}
};
})();
我想强制执行行load.classList.remove(“hidden”)代码>在等待关闭波纹管完成之前
如果我删除了闭包行,脚本就可以完美地工作,但是,如果闭包失败,我就无法让它工作
例如,下面的代码可以完美地工作:
(function() {
var weather = new Weather();
var input = document.getElementById("inputCity");
var weatherHolder = document.getElementsByClassName("weather");
var loading = document.getElementById("loadingSign");
input.focus();
input.onkeyup = function(e) {
if (e.keyCode == 13 && input.value != "") {
loading.classList.remove("hidden");
alert("teste");
loading.classList.add("hidden");
}
};
})();
问题出在load.classList.remove(“hidden”)行中代码>。这应该删除隐藏消息和微调器的类。如果我用微调器显示的警报替换闭合线,但是,如果我有该闭合函数,微调器将永远不会显示
我如何才能强制调用该行来判断闭包是否成功?我不太理解这个问题,但从您的代码来看,添加loading.classList.add(“hidden”)代码>在回调中,以便正确执行它
(function() {
var weather = new Weather();
var input = document.getElementById("inputCity");
var weatherHolder = document.getElementsByClassName("weather");
var loading = document.getElementById("loadingSign");
input.focus();
input.onkeyup = function(e) {
if (e.keyCode == 13 && input.value != "") {
loading.classList.remove("hidden");
weather.getWeather(input.value, function (returnValue) {
for (iter in returnValue) {
weatherHolder[iter].classList.remove('hidden');
document.getElementById("weather" + (parseInt(iter) + 1)).innerHTML = returnValue[iter].date;
}
// Here
loading.classList.add("hidden");
});
}
};
})();
好的,那么你要求“强制执行…”但事实上,我怀疑这里发生的是:我们移动的行不是“等待”getWeather完成。问题在于行加载.classList.remove(“隐藏”)代码>。这应该删除隐藏消息和微调器的类。如果我用微调器显示的警报替换关闭行,但是,如果我有关闭函数,微调器将永远不会显示代码>工作得很好,我想删除隐藏的类,正如我在上面的评论中所说的那样。它不应该依赖于关闭来工作,对吗?