鼠标上的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,而是用于函数。