Показать сообщение отдельно
  #4 (permalink)  
Старый 05.01.2010, 18:37
Новичок на форуме
Отправить личное сообщение для Gh0stik Посмотреть профиль Найти все сообщения от Gh0stik
 
Регистрация: 04.01.2010
Сообщений: 6

Спасибо за подсказку, вот исправил:
document.onclick = function(evt)
{
  evt = evt || window.event;
  var el = evt.target || evt.srcElement;
  if ((el.tagName.toLowerCase() == "th") && (el.parentNode.parentNode.parentNode.className == "tcolor"))
  {
    var elStyle = el.currentStyle || window.getComputedStyle(el, null);
    with (elStyle) {
      sValue = backgroundImage;
      p1 = sValue.lastIndexOf('c-')+2;
      p2 = sValue.lastIndexOf('.gif');
      imgName = sValue.substr(p1, p2-p1);

      switch (imgName)
      {
        case 'red': el.style.setProperty('background-image', sValue.replace('red','green'), "");  break;
        case 'green': el.style.setProperty('background-image', sValue.replace('green','yellow'), ""); break;
        case 'yellow': el.style.setProperty('background-image', sValue.replace('yellow','green'), ""); break;
      }
    }
  }
}

Но теперь не работает для IE, подскажите почему...


Сообщение от Octane
Верный способ, только событие onclick лучше начинать отлавливать на элементе <table>.
Не совсем понял, как это реализуется...

Есть ли возможность сделать так, чтобы при нажатии на очередной TH, стиль в "уже нажатой" (посещенном) ячейке изменялся на базовый, т.е. опять возвращался в url(c-red.gif);?
Ответить с цитированием