这样一段代码
'''javascript
$(function(){
    var ti=null;        
    ti=setInterval('scro("#con1")',500);
    $('#con1').hover(function(){
        clearInterval(ti);  
    },function(){
        ti=setInterval('scro("#con1")',500);
    })
})
function scro(obj){
    $(obj).animate({marginTop:'-24px'},500,function(){
        $(this).css({'margin-top':'0px'}).find('li:first').appendTo(this);  
    });     
};
'''
为什么把函数scro放到$(function(){})里面,函数就会报错而不执行,求指教,谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
放在
$(function(){})里面跟放在外面,作用域不一样了,后者是全局作用域。你这里用了
setInterval,第一个参数用的是字符串,这里跟setTimeout类似,可以参考MDN的描述>>留意第一句话,字符串会在全局作用域内被解释执行,那么如果你把
scro放在里面的话,全局就找不到scro了。我试着在console运行一下验证代码:

你看第二个,输出的是执行外部的
t的结果,这里看下第一个,就是怎么调用到里面的t的方式。用一个function(){}包裹,而不直接用字符串。这段代码我觉得从实践上并不是很优化,我从我的思路帮你写一下,参考一下