慕少5527016
2016-05-12 21:15:02
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>變寬高</title><style>li{ width:200px;height:100px;background:red;float: none;left:0;top: 0;margin-bottom: 20px;}</style><script type="text/javascript">window.onload=function(){var oli=document.getElementsByTagName('li');for( var i=0;i<oli.length;i++){oli[i].onmouseover=function(){startmove(400,"width",5);}oli[i].onmouseout=function(){startmove(200,"width",-5); }}var oli[i].timer=null;function startmove(oli[i],itarget,khg,speed){clearInterval(oli[i].timer);oli[i].timer=setInterval(function(){if (oli[i].style[khg]==itarget+"px") {clearInterval(oli[i].timer);}else{oli[i].style[khg]=parseInt(SBFH(oli[i],khg))+speed+'px';}},30)}function SBFH(obj,attr){if(obj.currentStyle){return obj.currentStyle[attr];}else{return getComputedStyle(obj,false)[attr];}}}</script></head><body><ul><li id="li1"></li><li id="li2"></li></ul></body>
1 回答

一毛錢
TA貢獻156條經驗 獲得超57個贊
你這個問題都沒有辦法改,你還沒有分清數組是什么,好好看看數組和方法,方法傳遞上有問題,也不知道什么事作用域
var oli = document.getElementsByTagName('li');
? ? ? ? for (var i = 0; i < oli.length; i++) {
? ? ? ? ? ? oli[i].onmouseover = function() {
? ? ? ? ? ? ? ? startmove(oli[i], 400, "width", 5);
? ? ? ? ? ? }
? ? ? ? ? ? oli[i].onmouseout = function() {
? ? ? ? ? ? ? ? startmove(oli[i], 200, "width", -5);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? var oli[i].timer = null;
這個已經出了作用域了,你這里的i都不知道是什么了
你的方法"function startmove(oli[i],itarget,khg,speed)" oli[i]又超出了作用域
startmove(200,"width",-5);你的方法是四個參數,你在這里傳遞了三個參數
點擊展開后面3條
添加回答
舉報
0/150
提交
取消