Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   в чем ошибка? (https://javascript.ru/forum/misc/34898-v-chem-oshibka.html)

czp 23.01.2013 16:11

в чем ошибка?
 
тултипам делаю выравнивание, после цикла код не пашет выдает ошибку на строку
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);

Deff 23.01.2013 16:15

Попробуйте заменить for (var i in oli) { на
for (var i=0; i<oli.length; i++) {

czp 23.01.2013 16:16

спасибо, так то робит, но в чем косяк понять не могу, нельзя в данной ситуации примять такой цикл?

Deff 23.01.2013 16:28

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

var oli;
var i;
oli = header.getElementsByTagName('li'),
04 bw = document.body.offsetWidth;
05
06 for (i in oli) {


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