Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Почему не работает такая конструкция? (https://javascript.ru/forum/events/31738-pochemu-ne-rabotaet-takaya-konstrukciya.html)

raffx 19.09.2012 10:45

Почему не работает такая конструкция?
 
Где ошибка?
function sort(){
        var elements = document.getElementsById("6");
        for(var i=0; i<elements.length; i++) {
            elements[i].style.display="none";
}
}

devote 19.09.2012 10:54

Цитата:

Сообщение от raffx
getElementsById

такого метода не существует.

если вам нужно получить все элементы с таким ID юзайте querySelectorAll но он не работает в ИЕ7 и ниже, для него можно подключить библу QSA CSS Selector Engine v1.0

lord2kim 19.09.2012 10:56

raffx, у всех элементов на странице должен быть индивидуальный идентификатор (id)
getElementById()

raffx 19.09.2012 11:15

Спасибо, не заметил лишнюю букву "s". Подправил скрипт, но что-то все-еще не работает. Вся картина следующая.

<a id="6" href="#">Первый</a><br>
<a id="6" href="#">Второй</a><br>
<a id="7" href="#">Третий</a><br>

<span onClick="sort(6)">Убрать перый и второй<a/>


function sort(id){
        var elements = document.getElementById(id);
        for(var i=0; i<elements.length; i++) {
            elements[i].style.display="none";
}
}

Когда жмешь span, должна запуститься функция sort и убрать первые 2 элемента, оставив только третий. Вроде должно работать, но :(

lord2kim 19.09.2012 11:20

raffx, вы не дочитали, что
Цитата:

у всех элементов на странице должен быть индивидуальный идентификатор
<a name="a" href="#">Первый</a><br>
<a name="a" href="#">Второй</a><br>
<a name="b" href="#">Третий</a><br>
 
<span onClick="sort('a')">Убрать перый и второй<a/>


function sort(id){
        var elements = document.getElementsByName(id);
        for(var i=0; i<elements.length; i++) {
            elements[i].style.display="none";
}
}

raffx 19.09.2012 11:43

Я всегда думал, что id и есть уникальный идентификатор...
Переделал так, все еще не работает.
<a name="6" href="#">Первый</a><br>
<a name="6" href="#">Второй</a><br>
<a name="7" href="#">Третий</a><br>
 
<span onClick="sort('6')">Убрать перый и второй</span>


function sort(id){
        var elements = document.getElementByName(id);
        for(var i=0; i<elements.length; i++) {
            elements[i].style.display="none";
        }
}


Или уникальный идентификатор name не может быть цифрой?

CekacBT 19.09.2012 12:49

ты продолжаешь брать по id элементы, а id у этих элементов бльше нету. вместо этого name у тебя


<a name="6" id="1" class="fuu" href="#">Первый</a><br>
<a name="6" id="2" class="fuu" href="#">Второй</a><br>
<a name="7" id="3" class="fuu"  href="#">Третий</a><br>
 
<span onClick="sort('6')">Убрать перый и второй</span>


function sort(id){
        var elements = document.getElementsByName(id);
        for(var i=0; i<elements.length; i++) {
            elements[i].style.display="none";
        }
}


+ к карме мне

raffx 19.09.2012 13:18

CekacBT, вы про этот id?

function sort(id){
var elements = document.getElementByName(id);

Я так понимаю, что тут может быть что угодно. Главное "getElementByName". Или я чего-то не пойму никак.
Пусть будет вот так, но скрипт не хочет работать.

function sort(key){
        var elements = document.getElementByName(key);
        for(var i=0; i<elements.length; i++) {
            elements[i].style.display="none";
        }
}

B@rmaley.e><e 19.09.2012 13:59

Откройте уже консоль ошибок и посмотрите, что там пишется.

raffx 19.09.2012 14:09

Понял.
getElementById пишется без s в конце Element
getElementsByName с буквой s.
Работает. Спасибо всем за помощь.


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