亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

問下最后一個fn方法怎么實現不了,還報錯

<!doctype html>

<html>

<head>

<meta charset="utf-8"/>

<title>js動態</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>


正在回答

2 回答

function starMouse(obj,json,fn){

var flag =true; -------------------這句代碼換個位置

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){

這次我考下來試了一下。

還是2個問題,

一,顏色值不能通過這個函數改變,你這里可以改成“height”試試

二,就是上面?var flag =true; 這句代碼要放到定時器內部去調用。放在外面的的話定時器執行一次之后flag就變成false不會再改變了,放在定時器里面的話每次運行都會重新賦值一次flag。

最后,共同進步~

0 回復 有任何疑惑可以回復我~
#1

慕粉3116392 提問者

非常感謝!
2016-11-20 回復 有任何疑惑可以回復我~

1,你第二次要改的是顏色,顏色這個東西既不是帶px值的又不是變更透明值《attr=="opacity"》是不能用這個運動函數改變;

2,第一個this是指代成功的,第二個this的時候這個this就不是第一個this了,你要用你申明的g來代替第二個this。

0 回復 有任何疑惑可以回復我~
#1

慕粉3116392 提問者

把那一段改成oLi[i].onmouseover = function(){ starMouse(this,{width:400,opacity:100},function(){ var g = this; starMouse(g,{height:150}) }); 也不行是不是var g = this;放錯地方了還是哪里的問題?謝謝解答
2016-11-19 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

問下最后一個fn方法怎么實現不了,還報錯

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號