谁能告诉我为什么这不起作用?
function changeBG(element_id){
document.getElementById(element_id).className= "arrowActive";
setTimeout("document.getElementById("+element_id+").className= 'arrow'", 300);
}
在 firebug 中,我收到一条错误消息,指出传递给 setTimeout() 的 element_id 未定义。
最佳答案
变量 element_id
将是一个字符串,因此您的超时代码将如下所示:
document.getElementById(myId).className = ...
请注意,myId 应该在引号中,但实际上没有。
更好的方法是使用闭包,如下所示:
function changeBG(element_id)
{
var elm = document.getElementById(element_id);
elm.className = "arrowActive";
setTimeout(function() { elm.className= 'arrow'; }, 300);
}
需要注意的是,在一个字符串中传递代码是not recommended .
关于javascript - 传递给 setTimeout 的函数变量不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/636341/