問(wèn)下最后一個(gè)fn方法怎么實(shí)現(xiàn)不了,還報(bào)錯(cuò)
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>js動(dòng)態(tài)</title>
<style>
*{
padding:0;
margin:0;
}
html,body{
width:100%;
height:100%;
}
li{
list-style:none;
width:200px;
height:100px;
display:block;
background-color:#0f0;
margin-top:20px;
border:2px solid #f00;
font-size:14px;
opacity:0.3;
filter:alpha(opacity:30);
}
</style>
</head>
<body>
<ul>
<li>fontsize</li>
<li>fontsize</li>
<li>fontsize</li>
</ul>
<script>
window.onload = function(){
var oLi = document.getElementsByTagName("li");
for(var i=0;i<oLi.length;i++){
oLi[i].timer =null;
oLi[i].onmouseover = function(){
var g =this;
starMouse(this,{width:400,opacity:100},function(){
starMouse(this,{color:#f00})
});
}
oLi[i].onmouseout =function(){
starMouse(this,{width:200,opacity:30});
}
}
}
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,false)[attr];
}
}
function starMouse(obj,json,fn){
var flag =true;
clearInterval(obj.timer);
var icur = 0;
obj.timer = setInterval(function(){
for(var attr in json){
if(attr=="opacity"){
icur = Math.round(parseFloat(getStyle(obj,attr)*100));
}else{
icur =parseInt(getStyle(obj,attr));
}
?
var pend = (json[attr]-icur)/8;
pend = pend>0?Math.ceil(pend):Math.floor(pend);
if(icur!=json[attr]){
flag=false;
}
if(attr=="opacity"){
obj.style.filter ='alpha(opacity:'+(icur+pend)+')';
obj.style.opacity=(icur+pend)/100;
}else{
obj.style[attr] = parseInt(getStyle(obj,attr))+pend+"px";
}
}
if(flag){
clearInterval(obj.timer);
if(fn){
fn();
}
}
},30)
}
</script>
</body>
</html>
2016-11-19
function starMouse(obj,json,fn){
var flag =true; -------------------這句代碼換個(gè)位置
clearInterval(obj.timer);
var icur = 0;
obj.timer = setInterval(function(){
for(var attr in json){
-------------------如下
function starMouse(obj,json,fn){
clearInterval(obj.timer);
var icur = 0;
obj.timer = setInterval(function(){
var flag =true;
for(var attr in json){
這次我考下來(lái)試了一下。
還是2個(gè)問(wèn)題,
一,顏色值不能通過(guò)這個(gè)函數(shù)改變,你這里可以改成“height”試試
二,就是上面?var flag =true; 這句代碼要放到定時(shí)器內(nèi)部去調(diào)用。放在外面的的話定時(shí)器執(zhí)行一次之后flag就變成false不會(huì)再改變了,放在定時(shí)器里面的話每次運(yùn)行都會(huì)重新賦值一次flag。
最后,共同進(jìn)步~
2016-11-17
1,你第二次要改的是顏色,顏色這個(gè)東西既不是帶px值的又不是變更透明值《attr=="opacity"》是不能用這個(gè)運(yùn)動(dòng)函數(shù)改變;
2,第一個(gè)this是指代成功的,第二個(gè)this的時(shí)候這個(gè)this就不是第一個(gè)this了,你要用你申明的g來(lái)代替第二個(gè)this。