var glide =new function(){ /*这个为什么要要new function不就是对象吗*/
function $id(id) { return document.getElementById(id); };
this.layerGlide=function(auto,oEventCont,oSlider,sSingleSize,second,fSpeed,point){
var oSubLi = $id(oEventCont).getElementsByTagName('li');
var interval,timeout,oslideRange;
var time=1;
var speed = fSpeed
var sum = oSubLi.length;
var a=0;
var delay=second * 2500;
var setValLeft=function(s){/*这种写有什么好处*/
return function(){
oslideRange = Math.abs(parseInt($id(oSlider).style[point])); /*解释下这行代码的意思*/
$id(oSlider).style[point] =-Math.floor(oslideRange+(parseInt(s*sSingleSize) - oslideRange)*speed) +'px'; /*解释下这行代码的意思*/
if(oslideRange==[(sSingleSize * s)]){
clearInterval(interval);
a=s;
}
}
};
}
var glide =new function(){ /*这个为什么要要new function不就是对象吗*/
就是创建个对象,你也可以:function abc(){},然后var glide = new abc();创建,但是上面的更简洁些,匿名函数形式,也就是你以后不能调用这个函数,在一定程度上保证只有一个glide对象。
var setValLeft=function(s){/*这种写有什么好处*/
创建函数的形式之一,跟之前变量创建保持形式上的一致吧,应该没有什么性能上好处
至于下面的两句代码,就是获取一个元素的一个属性的值,然后再根据规则去计算新值,赋值,计算规则自己认真看下
大虾就是这个计算规则我有些看不懂你帮我再看下这个全部代码是这样的
oslideRange本来就是0 s表示5张图片 sSingleSize是图片总高度 speend是速率 取值在0.05--1之间
现在就等于是(0+(5*268)-0)*0.5
我就觉得这两个oslideRange和speend没必要放进去啊,要算所有图片加在一起的总高度用s*sSingleSize
不就可以了吗?可是我测试把这两个给去掉就是不行,这是为什么?求救啊,我是自学的学起来辛苦啊,我把分都给你
$id(oSlider).style[point] =-Math.floor(oslideRange+(parseInt(s*sSingleSize) - oslideRange)*speed) +'px';
@严文Live:
现在就等于是(0+(5*268)-0)*0.5
应该是这样 0+(5*268-0)*0.5,你运算搞错了,
先计算的是parseInt(s*sSingleSize),然后是parseInt(s*sSingleSize) - oslideRange ,再是(parseInt(s*sSingleSize) - oslideRange)*speed,最后是结果
不知道你实际是什么场景,本领有限,只能解释到这样,呵呵
@for certain:
谢谢了,前几天我知道大概找到答案了,给20分你吧,希望你别介意
var glide =new function(){} => function() fun{},var glide =new fun => function() fun{},var glide =new fun();
var setValLeft=function(s){ 有什么好处要看上下文,这里不太清楚。
$id(oSlider)=> 类似document.getElementbyId(oSlider)的封装
style[point] =>类似style.left、style.width...,具体看point传进来的是什么
-Math.floor(oslideRange+(parseInt(s*sSingleSize) - oslideRange)*speed) +'px' 计算style[point] 对应的值。