Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   DOM. Выборка элемента по классу ручками (https://javascript.ru/forum/events/21609-dom-vyborka-ehlementa-po-klassu-ruchkami.html)

prolapse 17.09.2011 14:07

DOM. Выборка элемента по классу ручками
 
Добрый день, как сделать выборку элементов по class="classname", с помощью Javascript а не Библиотек.
А потом как это сделать командой/функцией?
То есть моя задача, создать функцию как в библиотеках jQuery и т.д.
чтобы пользователю осталось только вписать имя класса. Помогите, а то у меня с DOM беда.

Octane 17.09.2011 14:11

В современных браузерах есть querySelectorAll, в некоторых - getElementsByClassName, а для остальных в цикле фильтруй коллекцию getElementsByTagName("*"), проверяя свойство className каждого элемента.

melky 17.09.2011 14:18

есть встроенная функция getElementsByClassName, она не работает в шестом и седьмом осле

так что придется реализовывать велосипед только для них

вместо того, чтобы делать это самому, возьму пример с robertnyman.com

function getElementsByClassName(node, classname) {
    if (node.getElementsByClassName) {
        // если есть стандартная, костыли не используем
        return node.getElementsByClassName(classname);

    } else {

        var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
        var elements = node.all ? node.all : node.getElementsByTagName("*");
        var returnElements = [];
        var current;
        var length = elements.length;
        for (var i = 0; i < length; i++) {
            current = elements[i];
            if (testClass.test(current.className)) {
                returnElements.push(current);
            }
        }
        return returnElements;

    }
}

prolapse 17.09.2011 14:18

Цитата:

Сообщение от Octane (Сообщение 126860)
В современных браузерах есть querySelectorAll, в некоторых - getElementsByClassName, а для остальных в цикле фильтруй коллекцию getElementsByTagName("*"), проверяя свойство className каждого элемента.

Попробую, я просто всегда обходился для работы с DOM с пом. jQuery а теперь понял что сам в DOM 0. Попробую отпишусь.

prolapse 17.09.2011 14:21

Спасибо всем кто ответил, буду пробовать и отпишусь о результатах.

prolapse 18.09.2011 17:53

И так Люди сделал как вы сказали. Я создал функцию, которая в зависимости от переданного параметра выбирает нужный элемент по id/classname/tagname. Теперь мне нужно усложнить данную функцию.

Вопрос: "Как определить количество параметров, переданных вызывающей функцией?"

Тоесть: есть функция
function Same(a, b, c, d, e, f, g, h, t, e, r, t, y, u)
{
Тело функции
}
в коде вызывается наша функция
Same(some, tru, some, half); И наша функция должна определить сколько параметров передали отсюда. В данном случае бы вернула 4.
Я знаю как это сделать тупым способом - проверять каждую переменную на undefined. Но это уж очень не разумно.

melky 18.09.2011 18:13

гуглите в сторону arguments , arguments.length и function.length


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