出于某种原因,我无法在 javascript 超时后更改 HTML。这是我正在使用的代码:
setTimeout("$(\"#display p\").html(newDescription);", 250);
这有什么问题吗?如果我删除超时,脚本就可以完美运行。这是那个版本:
$("#display p").html(newDescription);
如果这有什么不同,我正在运行 Chrome 22
出于某种原因,我无法在 javascript 超时后更改 HTML。这是我正在使用的代码:
setTimeout("$(\"#display p\").html(newDescription);", 250);
这有什么问题吗?如果我删除超时,脚本就可以完美运行。这是那个版本:
$("#display p").html(newDescription);
如果这有什么不同,我正在运行 Chrome 22
是的,第一个参数应该是函数。
var newDescription = 'The Description';
setTimeout(function(){
$("#display p").html(newDescription);
}, 250);
或者
var newDescription = 'The Description',
myfunc = function(){
$("#display p").html(newDescription);
};
setTimeout(myFunc, 250);
此外newDescription
,必须在您的函数可访问的范围内。
将字符串传递给 setTimeout 时,将在全局范围内评估代码。很可能,newDescription
是一个局部变量,因此在 250 毫秒超时后评估代码时不可用。
您永远不应该将字符串传递给 setTimeout(),原因与您不应该使用 eval() 的原因相同。通过传递函数,您可以保留作用域变量并获得更好的性能,因为 JavaScript 引擎可以优化您的函数(而无法优化字符串参数中的代码)。
var newDescription = "My fancy new description";
setTimeout(function(){
$("#display p").html(newDescription);
}, 250);