问一个编码经验的有关问题,这样写好不好
问一个编码经验的问题,这样写好不好
才学js的jquery,老师用jquery做了个滚动图片的效果。
他是将滚动图片的所有相关代码(包括变量、事件绑定、时钟设置等),全部写入一个函数内,然后在ready里面调用。
我想问的是:实际开发中,这种将相关的JS代码定义到一个函数内常用吗? 我感觉这样做的话,后面时钟每次执行,上面的变量不会找不到么。 总感觉怪怪的。
主要之前一直学C#、java等,js的写法实在太怪了。一时理解不了,求解答
代码:
------解决思路----------------------
js作用域问题!
------解决思路----------------------
这样写可以把滚动相关的代码集中在一个地方,有利于代码维护。另外js的作用域相关的知识你可能还没搞清楚,去看看js基础教程吧
------解决思路----------------------
都可以,changeImg()函数就像好像是初始化函数初始化滚动相关的代码。整个ready(function() 函数就是一个初始化。
才学js的jquery,老师用jquery做了个滚动图片的效果。
他是将滚动图片的所有相关代码(包括变量、事件绑定、时钟设置等),全部写入一个函数内,然后在ready里面调用。
我想问的是:实际开发中,这种将相关的JS代码定义到一个函数内常用吗? 我感觉这样做的话,后面时钟每次执行,上面的变量不会找不到么。 总感觉怪怪的。
主要之前一直学C#、java等,js的写法实在太怪了。一时理解不了,求解答
代码:
<script>
$(document).ready(function() {
//轮换图片
function changeImg(){
//加载后只走一遍
var index=0;
var stop=false;
var $li=$("#scroll_img").children("li");//所有图片
var $page = $("#scroll_number").children("li");//所以可点击按钮
$page.eq(index).addClass("scroll_number_over").siblings().removeClass("scroll_number_over");
//鼠标放上后执行
$page.mouseover(function(){
stop=true;
index=$page.index($(this));
$li.eq(index).fadeIn().siblings().fadeOut();
$(this).addClass("scroll_number_over").siblings().removeClass("scroll_number_over");
}).mouseout(function(){
stop=false;
});
//循环执行
setInterval(function(){
if(stop){ return};
index++;
if(index>=$li.length){
index=0;
}
$li.eq(index).fadeIn().siblings().fadeOut();
$page.eq(index).addClass("scroll_number_over").siblings().removeClass("scroll_number_over");
},3000);
}
changeImg();
});
</script>
------解决思路----------------------
js作用域问题!
var a = 'asd';
var b = function() {
alert(a); //虽然b内没有定义a 但是由于a与b作用域相同!所以b内可以访问a变量
}
var c = function() {
var a = 'qwe';
alert(a); //所以c定义了a 所以使用函数内部的a变量
}
var d = function() {
a = 'qwe'; //没有使用var声明变量 将会覆盖上级作用域的变量
alert(a); //弹出qwe
}
b(); //弹出asd
alert(a); //a的值不变 弹出asd
c(); //弹出qwe
alert(a); //a的值不变 弹出asd
d(); //弹出qwe
alert(a); //a的值变为qwe 弹出qwe
------解决思路----------------------
这样写可以把滚动相关的代码集中在一个地方,有利于代码维护。另外js的作用域相关的知识你可能还没搞清楚,去看看js基础教程吧
------解决思路----------------------
都可以,changeImg()函数就像好像是初始化函数初始化滚动相关的代码。整个ready(function() 函数就是一个初始化。