这样一段代码
'''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(){})里面,函数就会报错而不执行,求指教,谢谢。
放在
$(function(){})
里面跟放在外面,作用域不一样了,后者是全局作用域。你这里用了
setInterval
,第一个参数用的是字符串,这里跟setTimeout
类似,可以参考MDN的描述>>留意第一句话,字符串会在全局作用域内被解释执行,那么如果你把
scro
放在里面的话,全局就找不到scro
了。我试着在console运行一下验证代码:

你看第二个,输出的是执行外部的
t
的结果,这里看下第一个,就是怎么调用到里面的t
的方式。用一个function(){}
包裹,而不直接用字符串。