Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
鼠标上的Javascript递归不起作用?_Javascript - Fatal编程技术网

鼠标上的Javascript递归不起作用?

鼠标上的Javascript递归不起作用?,javascript,Javascript,下面的代码应该轻轻地改变我传递到函数中的选项卡的颜色。但是,渐变只会在每次我进入标签时增加,而不是增加我将鼠标放在上面的时间 <script type = "text/javascript"> hex=255; function fadetext(element){ if(hex>0) { hex-=11; element.style.backgroundColor="rgb("+hex+","+hex+","

下面的代码应该轻轻地改变我传递到函数中的选项卡的颜色。但是,渐变只会在每次我进入标签时增加,而不是增加我将鼠标放在上面的时间

<script type = "text/javascript">
        hex=255;
    function fadetext(element){ 

    if(hex>0) {
        hex-=11;
        element.style.backgroundColor="rgb("+hex+","+hex+","+hex+")";
        setTimeout("fadetext(element)",50); 
    }
    else
        hex=255;
    }
</script>


    <div id="tabs">
    <ul>
         <li><a href="tab-frame-css.html" class="selected" target="mainFrame"  onMouseOver = "fadetext(this)" onclick="loadit(this)">Personal details</a></li>
    </ul>
    </div>

十六进制=255;
函数fadetext(元素){
如果(十六进制>0){
十六进制=11;
element.style.backgroundColor=“rgb(“+hex+”,“+hex+”,“+hex+”);
setTimeout(“fadetext(元素)”,50);
}
其他的
十六进制=255;
}

对于超时,元素作为文本使用时未定义。您应该使用异常函数:

var elem=element;//I find that this is needed in some browsers
setTimeout(function(){fadetext(elem);},50);
<script type = "text/javascript">
        hex=255;
    function fadetext(element){ 

    if(hex>0) {
        hex-=11;
        element.style.backgroundColor="rgb("+hex+","+hex+","+hex+")";
        setTimeout("fadetext(element)",50); 
    }
    else
        hex=255;
    }
} // You're missing this one here
</script>

值得一提的是,您在
fadetext
的末尾缺少了一个右括号
}
,您缺少了结束函数的大括号:

var elem=element;//I find that this is needed in some browsers
setTimeout(function(){fadetext(elem);},50);
<script type = "text/javascript">
        hex=255;
    function fadetext(element){ 

    if(hex>0) {
        hex-=11;
        element.style.backgroundColor="rgb("+hex+","+hex+","+hex+")";
        setTimeout("fadetext(element)",50); 
    }
    else
        hex=255;
    }
} // You're missing this one here
</script>

十六进制=255;
函数fadetext(元素){
如果(十六进制>0){
十六进制=11;
element.style.backgroundColor=“rgb(“+hex+”,“+hex+”,“+hex+”);
setTimeout(“fadetext(元素)”,50);
}
其他的
十六进制=255;
}
}//你错过了这个

尝试将
setTimeout()调用替换为:

setTimeout(function(){fadetext(element);},50); 

一种更加健壮的方法,具有平滑的动画。用法:fadeText(“elementid”,1000); 此外,您还可以对任何类型的动画重新使用此。只需更改插值和样式设置部分之间的值

function interpolate( start, end, pos ) {
  return start + ( pos * (end - start) );
}

function fadeText( dom, interval, delay ) {

      interval = interval || 1000;
      delay    = delay    || 10;

  var start    = Number(new Date());

  if ( typeof dom === "string" ) {
    dom = document.getElementById( dom );
  }

  function step() {

    var now     = Number(new Date()),
        elapsed = now - start,
        pos     = elapsed / interval,
        value   = ~~interpolate( 255, 0, pos );

    dom.style.backgroundColor =
    "rgb("+value+","+value+","+value+")";

    if ( elapsed < interval )
      setTimeout( step, delay );
  }

  setTimeout( step, delay );
}
函数插值(开始、结束、位置){
返回开始+(位置*(结束-开始));
}
函数fadeText(dom、间隔、延迟){
间隔=间隔| | 1000;
延迟=延迟| | 10;
var start=Number(新日期());
如果(dom的类型==“字符串”){
dom=document.getElementById(dom);
}
函数步骤(){
var now=编号(新日期()),
已用=现在-开始,
pos=经过时间/间隔,
值=~~插值(255,0,位置);
dom.style.backgroundColor=
“rgb(“+value+”、“+value+”、“+value+”)”;
如果(经过<间隔)
设置超时(步进,延迟);
}
设置超时(步进,延迟);
}

不应该是onmouseover而不是onmouseover?@Matias:HTML(与XML不同)不区分大小写。我把括号放错了位置,它不是用于else,而是用于函数。