javascript - 传递给 setTimeout 的函数变量不起作用?

标签 javascript iphone html

谁能告诉我为什么这不起作用?

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/

相关文章:

iphone - 执行一个需要一秒钟才能完成的方法,而不会暂时停止代码

ios - 来自 NSString 的 NSJSONSerialization

ios - 如何解决 ios7 和 Xcode 5.0.1 中的 Mach-O-Linker 错误

javascript - 如何计算 list.js 中当前未显示的已选中复选框?

javascript - 在不使用 Id 的情况下通过 javascript 应用样式

javascript - 将 "Vanilla"Javascript 库加载到 Node.js 中

javascript - 飞到购物车效果 - 通用图像

javascript - 在 HTML 表单中包含动态生成的引用

php - 将文本区域限制为固定数量的汉字

javascript - 突出显示所选文本并同时获取出现次数