Выцветание не работает, JavaScript - PullRequest
0 голосов
/ 04 марта 2012

Это очень простая задача, но где-то есть ошибка ... Я не могу ее найти.

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);".

Онблур не работает. Точнее, это не работает:

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

Если я размещу здесь, например: alert ('NOOOO'); это будет всегда в процессе, потому что непрозрачность + = 0.5 не работает .. Можете ли вы помочь мне: WTF это и почему он не работает? Спасибо ..

1 Ответ

0 голосов
/ 04 марта 2012

Вы добавляете число к строке, которая будет преобразовывать число в строку, а не преобразовывать строку в число. Если текущее значение, например, "0.7", вы получите "0.70.05" вместо 0.75.

Разобрать строку перед добавлением:

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

(Это, конечно, повторяет вызов get и анализ более чем необходим, вы можете хранить немедленные значения во временных переменных, чтобы сделать код менее повторяющимся.)

...