我听不懂。在 Chrome 调试器中它可以工作,但是当我将其关闭并刷新页面时,我的 div 是清晰的。
<script type="text/javascript">
$(document).ready(function() {
function banner_change(span) {
if ($(span).hasClass('show')) {
$(span).removeClass('show');
}
}
$('div#spec_banner span').each(function () {
if (!$(this).hasClass('show')) {
$(this).addClass('show')
}
setTimeout(banner_change(this), 5000);
});
});
</script>
感谢您的回答。
最佳答案
几个问题、语法和范围
当使用 setTimeout 而不使用匿名函数时,语法为:
setTimeout(banner_change, 5000); /* no () */
要传递参数需要执行以下操作:
setTimeout(function(){
banner_change(this);
}, 5000);
但是,回到范围,this
已经丢失了 setTimeout 内的上下文(现在可能是 window
),因此需要分配给 setTimeout 外部的变量
$('div#spec_banner span').each(function () {
if (!$(this).hasClass('show')) {
$(this).addClass('show')
}
var span =this
setTimeout(function(){
banner_change(span);
}, 5000);
});
关于JavaScript setTimeout 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19887228/