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

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

鏈式動畫的第三級動畫沒執行?追蹤了下代碼,發現傳入的fn值是undefined?各位大神可以幫忙看一下這個問題嗎?

<!DOCTYPE html>
<html lang="en">
<head>
? ?<meta charset="UTF-8">
? ?<title>JavaScript動畫學習--鏈式動畫的實現</title>
<style>
body,div {margin: 0;padding:0;}
.box {
? ? ? ? ? ?width: 200px;
? ? ? ? ? ?height: 200px;
? ? ? ? ? ?line-height: 200px;
? ? ? ? ? ?background-color: indianred;
? ? ? ? ? ?border-radius: 5px;
? ? ? ? ? ?box-shadow: 0 1px 1px indianred;
? ? ? ? ? ?text-align: center;
? ? ? ? ? ?color: #fff;
? ? ? ? ? ?font-size: 20px;
? ? ? ? ? ?opacity: 0.3;
? ? ? ? ? ?filter: alpha(opacity:30);
? ? ? ?}
? ?</style>

</head>
<body>
<!-- 鏈式動畫bug: 只有第一層動畫有效果,不能執行嵌套的下一級動畫, 原因傳入的fn是undefined-->
<div class="box">鏈式動畫</div>
<script>
window.onload = function() {
var oBox = document.getElementsByClassName('box')[0];
? ? ? ?oBox.onmouseover = function() {
var g = this;
? ? ? ? ? ?changeSize(g,100,'opacity',function(){
changeSize(g,400,'width',function(){
changeSize(g,300,'height')
? ? ? ? ? ? ? ?})
? ? ? ? ? ?})
? ? ? ?};
? ? ? ?oBox.onmouseout=function(){
var g = this;
? ? ? ? changeSize(g,200,'height',function(){
changeSize(g,200,'width',function(){
changeSize(g,30,'opacity')
? ? ? ? })
? ? ? ? })
? ? ? ? };
? ? ? ?/*
? ? ? ? * 獲取非行間樣式
? ? ? ? *@param iTarget 動畫的有效范圍
? ? ? ? * @param attr 改變的屬性
? ? ? ? */
function ?getStyle(obj,attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
? ? ? ? ? ?} else {
return getComputedStyle(obj,false)[attr];
? ? ? ? ? ?}
//return obj.currentStyle || getComputedStyle(obj,false)[attr];
}
/*
? ? ? ? * 動畫
? ? ? ? * @param obj 需要實現動畫的元素
? ? ? ? * @param iTarget 動畫的有效范圍
? ? ? ? * @param attr 改變的屬性
? ? ? ? * @param fn 實現鏈式動畫
? ? ? ? */
function changeSize(obj,iTarget,attr,fn) {
clearInterval(obj.timer);
? ? ? ? ? ?//obj.timer : 在多物體運動時,每個物體使用獨立的定時器
obj.timer = setInterval(function() {
? ? ? ? ? ? ? ?obj.curStyle = 0;
? ? ? ? ? ? ? ?if (attr == 'opacity') {
? ? ? ? ? ? ? ? ? ?obj.curStyle = Math.round(parseFloat(getStyle(obj,attr))*100);
? ? ? ? ? ? ? ?} else {
? ? ? ? ? ? ? ? ? ?obj.curStyle = parseInt(getStyle(obj,attr));
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?obj.iSpeed = (iTarget - obj.curStyle)/8;
? ? ? ? ? ? ? ?obj.iSpeed = obj.iSpeed > 0 ? Math.ceil(obj.iSpeed) : Math.floor(obj.iSpeed);
? ? ? ? ? ? ? ?if (obj.curStyle == iTarget) {
clearInterval(obj.timer);
? ? ? ? ? ? ? ? ? ?//鏈式動畫:當上一個動畫結束后,開始該動畫
if (fn) {
? ? ? ? ? ? ? ? ? ? ? ?fn()
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?} else {
if (attr == 'opacity') {
? ? ? ? ? ? ? ? ? ? ? ?obj.style.filter = 'alpha(opacity:'+ (obj.curStyle + obj.iSpeed)*100 +')';
? ? ? ? ? ? ? ? ? ? ? ?obj.style.opacity = (obj.curStyle + obj.iSpeed)/100;
? ? ? ? ? ? ? ? ? ?} else {
? ? ? ? ? ? ? ? ? ? ? ?obj.style[attr] = obj.curStyle + obj.iSpeed + 'px';
? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ?}
? ? ? ? ? ?},30);
? ? ? ?}
? ?};

</script>
</body>
</html>

正在回答

3 回答

我調試了沒問題啊,透明度-寬-高 依次變化~

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

就是在Chrome上調試的

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

chrom瀏覽器執行沒問題啊

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

hou110

chrome
2017-05-09 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

鏈式動畫的第三級動畫沒執行?追蹤了下代碼,發現傳入的fn值是undefined?各位大神可以幫忙看一下這個問題嗎?

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

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

幫助反饋 APP下載

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

公眾號

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