为什么在我的功能之前提醒功能

时间:2013-12-28 17:11:34

标签: javascript jquery

这是我的代码: FIDDLE

function ivideos() {
     $('#n1').html('hello');
     $('#n2').html('hello');
     $('#n3').html('hello');
     $('#n4').html('hello');
     $('#n5').html('hello');
}
ivideos();
alert("alert called");

我不知道为什么在我的功能完成之前调用警报。请帮帮我。

5 个答案:

答案 0 :(得分:3)

在功能完成之前不会调用警报。

您正在更新函数中的元素,并且这些元素会更改得很好。只是元素和屏幕上可见的内容不一样。

当您的代码正在运行时,浏览器中没有其他任何内容;没有其他代码运行,也没有事件处理。完成所有代码后,浏览器将继续处理事件,包括根据代码运行时发生的更改来更新屏幕。

答案 1 :(得分:2)

alert()的呼叫完成之后才会调用ivideos(),但您没有看到ivideos()的调用结果,因为浏览器尚未重新绘制元件。

您显示的代码都在一个事件中执行。浏览器可以选择等到它完成执行该事件,直到它重新绘制视口。

您可以使用setTimeout()功能将alert()的呼叫推送到后续事件。这样浏览器将在调用alert()之前重新绘制元素。

setTimeout(function() {
    alert("alert called");
}, 0);

jsfiddle

请注意,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").

之后调用