0

这是一个非常简单的任务,但某个地方是错误的..我找不到它。

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);
        }
    }
}

所以,我有一个输入(类型=文本)。带属性:

onfocus="SomeObj.fade(1);" 
onblur="SomeObj.fade(2);".

Onblur 不起作用。更准确地说,这不起作用:

get("wr_st").style.opacity+=0.05;

如果我会放在这里例如: alert('NOOOO'); 它将始终在进行中,因为 opacity+=0.5 不起作用.. 你能帮我吗:WTF 就是这样&为什么它不起作用?谢谢..

4

1 回答 1

0

您正在向字符串添加一个数字,这会将数字转换为字符串,而不是将字符串转换为数字。例如,如果当前值是"0.7"您最终得到"0.70.05"而不是0.75.

在添加之前解析字符串:

get("wr_st").style.opacity = (parseFloat(get("wr_st").style.opacity) + 0.05).toString();

(这当然是重复get调用和解析超过必要的,您可以将立即值存储在临时变量中以减少代码的重复性。)

于 2012-03-03T22:14:49.087 回答