这是一项非常简单的任务,但某处是错误的......我找不到它。
function get(obj) { return document.getElementById(obj); }
var SomeObj = {
t1:null,t2:null,
hide: function() {
if(parseFloat(get("wr_st").style.opacity)>0.45) {
get("wr_st").style.opacity-=0.05;
} else {
clearInterval(SomeObj.t1);
}
},
show: function() {
if(parseFloat(get("wr_st").style.opacity)<1) {
get("wr_st").style.opacity+=0.05;
} else {
clearInterval(SomeObj.t2);
}
},
fade: function($wt) {
if($wt==1) {
clearInterval(menu.status.t2);
menu.status.t1=setInterval('SomeObj.hide();',10);
} else if($wt==2) {
clearInterval(menu.status.t1);
menu.status.t2=setInterval('SomeObj.show();',10);
}
}
}
所以,我有一个输入(type = text)。使用属性:
onfocus="SomeObj.fade(1);"
onblur="SomeObj.fade(2);".
Onblur不起作用。更确切地说,这不起作用:
get("wr_st").style.opacity+=0.05;
如果我将这里放在前面:警报('NOOOO');它将始终在进行中,因为不透明度+ = 0.5不起作用.. 你能帮帮我吗:WTF是那个&amp;为什么它不起作用?谢谢..
答案 0 :(得分:0)
您正在为字符串添加一个数字,该字符串会将数字转换为字符串,而不是将字符串转换为数字。如果当前值为"0.7"
,则最终会使用"0.70.05"
而不是0.75
。
在添加之前解析字符串:
get("wr_st").style.opacity = (parseFloat(get("wr_st").style.opacity) + 0.05).toString();
(这当然是重复get
调用和解析而不是必要的,你可以将临时值存储在临时变量中,以减少代码的重复性。)