Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вроде простая проблема (https://javascript.ru/forum/events/28855-vrode-prostaya-problema.html)

jorik 11.06.2012 18:48

спасибо и на том. Вопрос решил. Может кому нужно будет
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}
function prepareInputsForHints() {
  var inputs = document.getElementsByTagName("input");
  for (var i=0; i<inputs.length; i++){
    inputs[i].onfocus = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
    }
    inputs[i].onblur = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "none";
    }
  }
  var selects = document.getElementsByTagName("select");
  for (var k=0; k<selects.length; k++){
    selects[k].onfocus = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
    }
    selects[k].onblur = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "none";
    }
  }
  var textareas = document.getElementsByTagName("textarea");
  for (var m=0; m<textareas.length; m++){
    textareas[m].onfocus = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
    }
    textareas[m].onblur = function () {
      this.parentNode.getElementsByTagName("span")[0].style.display = "none";
    }
  }
}
addLoadEvent(prepareInputsForHints);


html, после формы добавляем span с текстом
<span class="hint">какойто текст</span>


сss
Код:

.hint {
          display: none;
    position: absolute;
    left: 350px;
        top:5px;
    width: 250px;
        height:20px;
        text-align:center;
        box-shadow: 0 0 3px rgba(0,0,0,0.5);
    margin-top:-5px;
    border: 1px solid #ffffff;
    padding: 3px 4px;
    background: #f6f5f5 url(pointer.gif) no-repeat -10px 5px;
        border-radius: 5px;


jorik 12.06.2012 15:57

появился еще один вопрос по этому поводу, Все нормально работает, вот только IE 6-8 хоть и работает но ругется. Ошибка

Что это значит и как это можно исправить (скрипт выше)?

devote 12.06.2012 20:57

Цитата:

Сообщение от jorik
Что это значит и как это можно исправить (скрипт выше)?

это значит что элемент SPAN не удалось найти и соответственно элемента с индексом 0 нету в возвращенном значении после getElementsByTagName("span").

Можно это обойти примерно так:
( this.parentNode.getElementsByTagName( "span" )[ 0 ] || { style: {} } ).style.display = "inline";

Deff 12.06.2012 21:35

jorik,
Токо шо напоролся на такое ж в ИЕ

Нужно начинать поиск с родителя, который имеет id и далее внутрь,

jorik 13.06.2012 11:07

Цитата:

Сообщение от devote (Сообщение 181045)
это значит что элемент SPAN не удалось найти и соответственно элемента с индексом 0 нету в возвращенном значении после getElementsByTagName("span").

Можно это обойти примерно так:
( this.parentNode.getElementsByTagName( "span" )[ 0 ] || { style: {} } ).style.display = "inline";

Спасибо, это проблему решило, но в связи с этим появилась другая.
Теперь подсказки возле форм по клику на форму появляются, но не исчезают по клику на вне формы или по другой форме.

Цитата:

Нужно начинать поиск с родителя, который имеет id и далее внутрь,
большое спасибо за совет, но я не очень силен в этом:) Если можно приведите пример как переделать существующий код

jorik 13.06.2012 12:07

Всем огромное спасибо, разобрался :)


Часовой пояс GMT +3, время: 19:21.