我有以下javascript,但我在使用setTimeout时遇到问题,即:
function setUrl()
{
// Get system URL details
var url_path = new String(window.location.pathname);
var new_url;
new_url = window.location.host;
}
setTimeout("setValue('ONE_UP_URL',new_url);",2000);
}
但由于某种原因,我收到错误:'new_url'未定义。
非常感谢您使用setTimeout调用此javascript函数的帮助。
感谢。
答案 0 :(得分:7)
不要使用字符串作为setTimeout
函数调用的第一个参数,使用匿名函数。
你还有一个额外的大括号:
function setUrl() {
// Get system URL details
var url_path = window.location.pathname,
new_url = window.location.host;
setTimeout(function () {
setValue('ONE_UP_URL',new_url);
}, 2000);
}
如果你使用一个字符串,它将被评估,而不是recommended。
使用eval
(及其亲属,Function
,setTimeout
和setInterval
)评估代码被认为是危险的,因为它们会执行您传递的代码调用者的权限,几乎所有时候都有一个解决方法来避免它们。
其他小事:
window.location.pathname
已经是一个字符串。答案 1 :(得分:6)
你有一个流氓闭合支撑。要么缺少更多代码,要么只需删除它。 (setTimeout上面的行。)
另外,你应该替换它:
setTimeout("setValue('ONE_UP_URL',new_url);",2000);
用这个:
setTimeout(function() { setValue('ONE_UP_URL', new_url); }, 2000);
答案 2 :(得分:1)
尝试将其更新为:
function setValue( s, variable ) {
alert( s );
alert( variable );
}
function setUrl()
{
// Get system URL details
var url_path = window.location.pathname,
new_url = window.location.host;
setTimeout(
function() {
setValue('ONE_UP_URL',new_url);
}, 2000 );
}