Да, нашел ошибку.. она была в этом:
var sosed=rod.previousElementSibling;
Этот метод не поддерживает, Нашел тут
http://habrahabr.ru/post/54380/
скрипт и с помощью него как я понял будет поддерживать, но чет не работает..:
// Создаем новый элемент для дальнейших проверок
var element = document.createElement("div");
// Проверяем, что браузер не поддерживает ElementTraversal
if(typeof element.firstElementChild == "undefined") {
// Создаем объект с набором методов
var ElementTravrsal = {
// Поиск первого дочернего элемента
firstElementChild: function() {
// Получаем первый дочерний узел
var node = this.firstChild;
// Находим следующий соседний узел пока не встретили элемент
// или не получили значение null
while(node && node.nodeType != 1) node = node.nextSibling;
// Возвращаем найденный элемент или null
return node;
},
// Поиск последнего дочернего элемента
lastElementChild: function() {
// Получаем последний дочерний узел
var node = this.lastChild;
// Находим предыдущий соседний узел пока не встретили элемент
// или не получили значение null
while(node && node.nodeType != 1) node = node.previousSibling;
// Возвращаем найденный элемент или null
return node;
},
// Поиск следующего соседнего элемента
nextElementSibling: function() {
// Объявляем переменную и инициализируем
// ее ссылкой на текущий элемент
var node = this;
// Находим следующий соседний узел пока не встретили элемент
// или не получили значение null
do node = node.nextSibling
while(node && node.nodeType != 1);
// Возвращаем найденный элемент или null
return node;
},
// Поиск предыдущего соседнего элемента
previousElementSibling: function() {
// Объявляем переменную и инициализируем
// ее ссылкой на текущий элемент
var node = this;
// Находим предыдущий соседний узел пока не встретили элемент
// или не получили значение null
do node = node.previousSibling;
while(node && node.nodeType != 1);
// Возвращаем найденный элемент или null
return node;
},
// Определение количества дочерних элементов
// Проверяем, что браузер не поддерживает геттер children
childElementCount: typeof element.children == "undefined" ? function() {
// Браузер не поддерживает children,
// поэтому получаем список всех дочерних узлов
var list = this.childNodes,
// определяем их количество
i = list.length,
// заводим счетчик элементов
j = 0;
// Проходя в цикле по всем дочерним узлам,
while(i--)
// если встретился элемент,
if(list[i].nodeType == 1)
// увеличиваем счетчик
j++;
// Возвращаем количество дочерних узлов или 0
return j;
} : function() {
// Браузер поддерживает children,
// поэтому получаем список всех дочерних элементов
// и возвращаем их количество
return this.children.length;
}
};
// Создаем геттеры для IE8
if(Object.defineProperty)
for(var property in ElementTravrsal)
if(ElementTravrsal.hasOwnProperty(property))
Object.defineProperty(Element.prototype, property, {
get: ElementTravrsal[property]
});
// для Firefox 2+ и Safari 3+
if(Object.__defineGetter__)
for(var property in ElementTravrsal)
if(ElementTravrsal.hasOwnProperty(property))
HTMLElement.prototype.__defineGetter__(property, ElementTravrsal[property]);
}
И что мне теперь делать как прописать это : var sosed=rod.previousElementSibling; чтобы работало?