这是我的代码: FIDDLE
function ivideos() {
$('#n1').html('hello');
$('#n2').html('hello');
$('#n3').html('hello');
$('#n4').html('hello');
$('#n5').html('hello');
}
ivideos();
alert("alert called");
我不知道为什么在我的功能完成之前调用警报。请帮帮我。
答案 0 :(得分:3)
在功能完成之前不会调用警报。
您正在更新函数中的元素,并且这些元素会更改得很好。只是元素和屏幕上可见的内容不一样。
当您的代码正在运行时,浏览器中没有其他任何内容;没有其他代码运行,也没有事件处理。完成所有代码后,浏览器将继续处理事件,包括根据代码运行时发生的更改来更新屏幕。
答案 1 :(得分:2)
在alert()
的呼叫完成之后才会调用ivideos()
,但您没有看到ivideos()
的调用结果,因为浏览器尚未重新绘制元件。
您显示的代码都在一个事件中执行。浏览器可以选择等到它完成执行该事件,直到它重新绘制视口。
您可以使用setTimeout()
功能将alert()
的呼叫推送到后续事件。这样浏览器将在调用alert()
之前重新绘制元素。
setTimeout(function() {
alert("alert called");
}, 0);
请注意,alert()
,confirm()
和prompt()
是唯一的,因为它们会暂停当前事件的执行。
答案 2 :(得分:1)
首先调用您的函数。它只是你无法看到它。 在您的函数内部发出警报并查看结果。
以下是Fiddle
function ivideos() {
$('#n1').html('hello');
$('#n2').html('hello');
$('#n3').html('hello');
$('#n4').html('hello');
$('#n5').html('hello');
alert('hello');
}
ivideos();
alert("alert called");
答案 3 :(得分:1)
按顺序调用所有内容。当您将alert
更改为console.log
时,您可以看到首先调用了ivideos()
function ivideos() {
console.log("ivideos begin");
$('#n1').html('hello');
$('#n2').html('hello');
$('#n3').html('hello');
$('#n4').html('hello');
$('#n5').html('hello');
console.log("ivideos end");
}
ivideos();
console.log("alert called");
请参见修改后的JSFiddle
答案 4 :(得分:0)
您的"alert"
函数已在"function ivideos"
之后调用,但由于浏览器第一个警告弹出窗口在呈现的html之后可见。
查看演示here
function ivideos() {
$('#n1').html('hello');
$('#n2').html('hello');
$('#n3').html('hello');
$('#n4').html('hello');
$('#n5').html('hello');
alert(1);
}
ivideos();
alert("alert called");
首先alert(1)
将在alert("alert called").