為什么我的不能進行鏈式運動
window.onload = function() {
?? ??? ??? ??? ?var Li = document.getElementById('li1');
?? ??? ??? ??? ?Li.onmouseover = function() {
?? ??? ??? ??? ??? ?startMove(Li, 'width', 400, function() {
?? ??? ??? ??? ??? ??? ?startMove(Li, 'height', 200, function() {
?? ??? ??? ??? ??? ??? ??? ?startMove(Li, 'opacity', 100);
?? ??? ??? ??? ??? ??? ?});
?? ??? ??? ??? ??? ?});
?? ??? ??? ??? ?}
?? ??? ??? ??? ?Li.onmouseout = function() {
?? ??? ??? ??? ??? ?startMove(Li, 'opacity', 30, function() {
?? ??? ??? ??? ??? ??? ?startMove(Li, 'height', 100, function() {
?? ??? ??? ??? ??? ??? ??? ?startMove(Li, 'width', 200);
?? ??? ??? ??? ??? ??? ?});
?? ??? ??? ??? ??? ?});
?? ??? ??? ??? ?}
?? ??? ??? ?}
move.js
function startMove(obj, attr, target, fn) {
?? ?clearInterval(obj.timer);
?? ?obj.timer = setInterval(function() {
?? ??? ?//獲取當前的值
?? ??? ?var icur = 0;
?? ??? ?if(attr == 'opacity') {
?? ??? ??? ?icur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
?? ??? ?} else {
?? ??? ??? ?icur = parseInt(getStyle(obj, attr));
?? ??? ?}
?? ??? ?//2算速度
?? ??? ?var speed = (target - icur) / 8;
?? ??? ?speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
?? ??? ?//3檢測停止
?? ??? ?if(icur == target) {
?? ??? ??? ?clearInterval(obj.timer);
?? ??? ??? ?if(fn) {
?? ??? ??? ??? ?fn();
?? ??? ??? ?}
?? ??? ?} else {
?? ??? ??? ?if(attr == 'opacity') {
?? ??? ??? ??? ?obj.style.filter = 'alpha(opacity:' + icur + speed+ ')'; //IE
?? ??? ??? ??? ?obj.style.opacity = (icur + speed) / 100;
?? ??? ??? ?} else {
?? ??? ??? ??? ?obj.style[attr] = icur + speed + 'px';
?? ??? ??? ?}
?? ??? ?}
?? ?}, 30);
}
function getStyle(obj, attr) {
?? ?if(obj.currentStyle) {
?? ??? ?return obj.currentStyle[attr];
?? ?} else {
?? ??? ?return getComputedStyle(obj, false)[attr];
?? ?}
}
2016-09-27
2016-09-20
有可能是瀏覽器的問題,你把代碼復制到慕課網寫代碼的地方,測試一下,如果可以,那就是瀏覽器的問題了。
因為我的代碼也有問題,測試傳入fn函數參數時,總是顯示錯誤:參數后面少")"。拿到慕課網測試,又可以傳入函數參數。至于具體神馬問題,憋問我,目前我也不知道,望有學霸解答一下。
2016-09-13
我把你的代碼拷下來運行可以鏈式運動啊,你是不是HTML順序沒寫對?要這樣寫
先引move.js再window.onload