2012-03-03 1 views
0

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

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; 

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

+0

Вы пытались преобразовать '.opacity' в целое число так:' get ("wr_st"). Style.opacity = parseInt (get ("wr_st"). Style.opacity) + 0.05'? – Yaniro

ответ

0

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

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

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

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