百度空间的相册左侧是一列相册列表,显示5个相册,当相册数超过5个时,单击下箭头就可以使相册列表往上滚动一格,即本来显示的是第i到第i+5个相册,单击下箭头之后,就显示第i+1到第i+6个了。并且是动态滚动,我很想知道那个动态滚动效果是怎么做出来的。散分啊,参与有分
解决方案 »
- 请教:数组的sort()方法按数字大小排列
- jQuery取Hiddenfield的值,求救?
- 如何实现像Csdn当鼠标移到用户名时显示一个方框(包括头像和个人帐户信息)?
- form中的inpu file onchange问题
- 满分贴
- JS 正则表达式
- 请教:如何修改下面代码以使POPUP中的关闭生效。。
- js里面取一个数小数点后面多少位的函数有吗? 告诉小弟^_^
- 读取cookies方面的问题,请帮我看看。
- 发现在easyui datagrid getSelections一个小bug,怎么解决?
- 请问可以用js获取图层的display属性吗?
- js实现:“打开子页面,父页面被屏蔽(不可用) 变暗”
<script>
var objmain = G("main");//翻页事件
function bandLink(evt){
var e=window.event||evt;
var o=e.srcElement||e.target;
var l=o.href; var aArr=l.split("#/");
var m=aArr[1]; var newLink="";
var mArr=m.split("/"); mArr[mArr.length-2]="page";
newLink=mArr.join("/"); var dataLink="http://hi.baidu.com/"+newLink.replace("#","");
dataLink+="?t="+Math.random();
var myJs=new JsLoader();
myJs.onsuccess=function(){
if(errorNum) {
showErr(errorNum);
G('album_Intro').innerHTML ="";
G('album_Name').innerHTML="";
return;
}
G('album_Intro').innerHTML =albumInfo.albDesc;
G('album_Name').innerHTML =albumInfo.albName;
G('upPicBnt').onclick =function(){
if(albumInfo.albUseV<albumInfo.albAllV) addPhoto('/woorahm/creat/picture/album/'+albumInfo.albEncName+'/0');
else alertPop('上传新照片','相册空间已满');
return false;
}
imgarr=albPicArr;
//异步数据载入时覆盖原来的值
chgimgs();
G('page').innerHTML=albumInfo.albPageBar; addPageBarEvent();
}
myJs.load(dataLink);
}function addPageBarEvent(){
var pageBar=G('page');
if(typeof(pageBar)=="undefined" || !pageBar) return;
var pageLinks=pageBar.getElementsByTagName('a');
var pageLinksLen=pageLinks.length;
for(var i=0;i<pageLinksLen;i++)
{
pageLinks[i].onclick=function(event){bandLink(event);}
}
}function updatesize(){
var bodyw = window.document.body.offsetWidth;
if(bodyw <= 790) {objmain.style.width="772px";}
else if(bodyw >= 1016) objmain.style.width="996px"; else objmain.style.width="100%";if(0){
showErr(0);
G('album_Intro').innerHTML ="";
G('album_Name').innerHTML="";
}else{
if(imgarr.length<=0)
{
G('forimgs').innerHTML="该相册还没有照片,<a href='#' onclick='if(4.0 < 1000.0) addPhoto(\"/woorahm/creat/picture/album/%C3%A8/0\"); else alertPop(\"上传新照片\",\"相册空间已满\"); return false;'>立即上传。</a><div id='page'></div>";
scroll2photo();
return;
} else { chgimgs(); addPageBarEvent();}
}}
updatesize();
window.onresize = updatesize;initAlbList();document.onmouseup=function(){setContinue(0);}</script>
大概既是当点击箭头时,异步加载下一页的数据,然后通过innerHTML来进行替换。
有个方法叫
//异步数据载入时覆盖原来的值
chgimgs();
function chgimgs(){
var mm = G("m_albumlist");
if(mm.offsetWidth>700){
g_cols = 3;
}else{
g_cols = 2;
}
showimgs();
scroll2photo();
}
//这个方法里有个showimgs();方法function showimgs(){
var g_bar="";
try{ g_bar=G("page").innerHTML; }catch(e){}
htm="";
htm += '<table width="100%" border="0" cellspacing="0" cellpadding="0" id="forimgsTable">';
for(i=0,len=imgarr.length; i<=len; i+=g_cols){
if(i>0){htm+='<tr><td colspan="'+g_cols+'"><div class="line"> </div></td></tr>';}
htm+="<tr>";
var tr1="";
var tr2="";
var tr3="";
for(j=i ; j<i+g_cols && j<len; j++){
tr1+='<td align="center" valign="bottom" id="photo_'+j+'" onmouseover="tdMouseOver('+j+')" onmouseout="tdMouseOut('+j+')" width="25%">';
tr1+='<br style="line-height:10px;"><a href="'+imgarr[j].purl+'" target="_blank"><img src="'+imgarr[j].psrc+'" border="0"></a></td>';
tr2+='<td align="center" valign="top" id="photo_'+j+'_size" onmouseover="tdMouseOver('+j+')" onmouseout="tdMouseOut('+j+')"><div class="tit"><span class="size">'+imgarr[j].psize;
if(imgarr[j].pcmtNum>0) tr2+=' | <span class="cmt"><a href="'+imgarr[j].purl+'#pComment">评论('+imgarr[j].pcmtNum+')</a></span>';
tr2+='</span><br><span class="name">'+insertWbr(imgarr[j].pname,24)+'</span></div></td>';
if(imgarr[j].pedit && imgarr[j].pedit.length>0){
tr3+="<td align='center' id=\"photo_"+j+"_edit\" height=\"25\" onmouseover=\"tdMouseOver("+j+")\" onmouseout=\"tdMouseOut("+j+")\"><div class=\"edit\">"+imgarr[j].pedit;
tr3+=" | <a href='#' class='act' onClick='photodel(\"photoform"+j+"\");return false;'>删除</a></div><form style='display:none;' action='/woorahm/commit' name='photoform"+j+"' id='photoform"+j+"' method='post'><input type='hidden' name='bdstoken' value='9d863f6f43a7f54daafcc10754952522'><input type='hidden' name='ct' value='4'><input type='hidden' name='cm' value='3'><input type='hidden' name='spPhotoName' value='"+imgarr[j].pname+"'><input type='hidden' name='spPhotoID' value='"+imgarr[j].pid+"'><input type='hidden' name='spRefURL' value='"+XSSspRefURL +"'></form></td>";
}else{
tr3+="<td align='center' id='photo_"+j+"_edit' onmouseover='tdMouseOver("+j+")' onmouseout='tdMouseOut("+j+")' style='height:5px;'> </td>";
}
}
htm+=tr1+"</tr><tr>"+tr2+"</tr><tr>"+tr3+"</tr>";
}
htm+="</table><br><div id='page'>"+g_bar+"</div>";
G("forimgs").innerHTML=htm;
}G("forimgs").innerHTML=htm;看到最后一句话了吗?就是它innerHTML.
大体代码如下:
var images=[]; //图片数组
var m;
function init()
{
var imgarr=document.getElementsByTagName("img");
for(var i=0;i<imgarr.length;i++)
{
if(imgarr[i].className=="img")
images.push(imgarr[i]);
addEventListener(imgarr[i],"mouseover",handleevent) //自动为每个元素添加鼠标经过方法
}
}
function addEventListener(ele,type,func)
{
if(ele.addEventListener)
{
ele.addEventListener(type,func,false);
}
else
{
ele.attachEvent("on"+type,func);
}
}
function handleevent(evt)
{
var event=window.event?window.event:evt;
var target=event.target?event.target:event.srcElement;
for(var i=0;i<images.length;i++)
{
if(images[i]==target)
break;
}
setTimeout(function()
{
go(i)
},200);
}
function go(i)
{
$("div").style.display="none";
document.getElementById("showpic").disabled="";
m=images[i].src;
document.getElementById("showpic").src=images[i].src;
document.getElementById("show").style.display="";
var prev=(i-1+images.length)%images.length;
var next=(i+1)%images.length;
document.getElementById("prev").onclick=function()
{
setTimeout(function()
{
go(prev);
},200);
};
document.getElementById("next").onclick=function()
{
setTimeout(function()
{
go(next);
},200);
};
}
function hide()
{
//var imgs=document.getElementById("showpic").src;
var g=m.lastIndexOf("/");
var s=m.substring(g+1);
var d=document.getElementById("div");
if(!$("button1"))
{
$("div").style.display="";
var btn1=document.createElement("input");
btn1.type="button";
btn1.className="font";
btn1.value="显示";
btn1.id="button1";
d.appendChild(btn1);
btn1.onclick=function()
{
setTimeout(function()
{
document.getElementById("showpic").style.display="";
document.getElementById("showpic").src=s;
},2);
};
var btn2=document.createElement("input");
btn2.type="button";
btn2.className="font"
btn2.value="隐藏";
btn2.id="button2";
d.appendChild(btn2);
btn2.onclick=function()
{
setTimeout(function()
{
document.getElementById("showpic").style.display="none";
},2);
};
}
else
{
$("div").style.display="";
$("button1").onclick=function()
{
setTimeout(function()
{
document.getElementById("showpic").style.display="";
document.getElementById("showpic").src=s;
},2);
};
$("button2").onclick=function()
{
setTimeout(function()
{
document.getElementById("showpic").style.display="none";
},2);
};
}
if(document.getElementById("button1").isTextEdit)
{
document.getElementById("showpic").disabled="true";
}
}
function $(id)
{
return document.getElementById(id);
}
function resize(size)
{
var img=document.getElementById("showpic");
var style=img.currentStyle;
var height=parseInt(style.height);
var width=parseInt(style.wdith);
img.style["height"]=size+"px";
img.style["width"]=size+"px";
}
</script>其实主要思想就是在点向下的箭头的时候让第一个不可见并且把后面的往前移一个位置,再让后面的补到可见的最后一个位置上,这里做个循环就行啦!