jQuery的setTimeout传递字符串参数误差的解决方案
当你计划打一些jQuery代码元素的显示和隐藏,调用setTimeout()来设置HTML延迟一段时间后:整个页面的代码如下所示。
复制代码代码如下所示:
显示下一个
是的,我是下一个。
功能shownext(文本){
setTimeout($(' #日志')。表明()(),文本(text)
}
显示()调用成功。但是文本()调用失败。控制台显示未定义文本。
对于这个问题我没有得到更好的答案。我认为jQuery改变了setTimeout()函数的内容,使变失败。
我接着做了下一个实验。
复制代码代码如下所示:
显示下一个
是的,我是下一个。
功能shownext(文本){
setTimeout(警报(文本)
}
我想看看jQuery是否真的有问题。这是同一个错误。
然后我们看了看那本书,发现了问题。
当setTimeout()接受一个字符串参数,它将在全球范围内,也就是说,它是位于外的任何功能。最简单的修复方法是使用本地函数(匿名函数)来解决这个问题。
复制代码代码如下所示:
显示下一个
是的,我是下一个。
功能shownext(文本){
setTimeout()函数({ $(' #日志')。显示(文本)(文本);},1000);
}
成功解决这个问题。