Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.01.2013, 16:11
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

в чем ошибка?
тултипам делаю выравнивание, после цикла код не пашет выдает ошибку на строку
tooltip = oli[i].getElementsByTagName('span')[0];
или последнюю в цикле, главное значения проставляет, и все работает на странице(тултипы на своих местах), а вот весь код после цикла не пашет из за той ошибки в чем косяк?
var header = document.getElementsByTagName('header')[0];

var oli = header.getElementsByTagName('li'),
    bw  = document.body.offsetWidth;

for (var i in oli) {
  var tooltip = oli[i].getElementsByTagName('span')[0];

  var ll = oli[i].offsetLeft,
      lw = oli[i].offsetWidth,
	  
	  tw = tooltip.offsetWidth,
	  tl = tooltip.offsetLeft,
	  
	  left = (ll + lw / 2) - (tw / 2);
	  
  if ((left + tw) > bw) {
    left = left - -(bw - (left + tw) - 3);
  }

  tooltip.setAttribute('style', 'left:' + left + 'px');
}

alert(123);
Ответить с цитированием
  #2 (permalink)  
Старый 23.01.2013, 16:15
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Попробуйте заменить for (var i in oli) { на
for (var i=0; i<oli.length; i++) {
Ответить с цитированием
  #3 (permalink)  
Старый 23.01.2013, 16:16
czp czp вне форума
Профессор
Отправить личное сообщение для czp Посмотреть профиль Найти все сообщения от czp
 
Регистрация: 15.10.2011
Сообщений: 213

спасибо, так то робит, но в чем косяк понять не могу, нельзя в данной ситуации примять такой цикл?
Ответить с цитированием
  #4 (permalink)  
Старый 23.01.2013, 16:28
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

czp,
Суть в том, что подобный цикл только для объекта(а не массива), и если для массива его использовать, то при смене объекта его нужно инициализировать иначе;

var oli;
var i;
oli = header.getElementsByTagName('li'),
04 bw = document.body.offsetWidth;
05
06 for (i in oli) {
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите в чем ошибка? czp Общие вопросы Javascript 3 15.05.2012 21:48
В чем ошибка при проверке телефона?? Amateur Общие вопросы Javascript 4 16.06.2011 22:52
Ошибка в jQuery 1.5.1. Не понимаю в чем проблема? viatcheslav AJAX и COMET 0 16.05.2011 11:38
[новичек] в чем ошибка? Gloft Events/DOM/Window 2 10.05.2009 23:11
не могу понять в чём ошибка scuter Общие вопросы Javascript 2 28.08.2008 15:22