Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Получение элемента по атрибуту data-* (http://forum.oszone.net/showthread.php?t=341911)

kosmonavtom 22-08-2019 19:31 2885131

Получение элемента по атрибуту data-*
 
Здравствуйте.
Вот нашел и собрал вот такой код с ошибками (ошибки в строке с: elem = document.querySelector("div[data-reactid=sr]"); видимо не так что-то пишу)

Код:

<script>
function chpok(sr){
    elem = document.querySelector("div[data-reactid=sr]"); //находим блок div и значение атрибута data-reactid
    state = elem.style.display; //смотрим, включен ли сейчас элемент
    if (state =='') elem.style.display='none'; //если включен, то выключаем
    else elem.style.display=''; //иначе - включаем
}
</script>

Он должен работать (т.е. отображать блоки div или скрывать при нажатии на кнопки) для тегов HTML вида:

HTML код:

<button onclick="chpok('.1.$0')">
Вопрос 1
</button>
<div data-reactid='.1.$0' style="display:none">
Это выводится первый вопрос?
</div>
<button onclick="chpok('.1.$1')">
Вопрос 2
</button>
<div data-reactid='.1.$1' style="display:none">
Тут выводится второй вопрос.
</div>

Если везде заменить "data-reactid" на "id", и ошибочную строку на строку elem = document.getElementById(id); то все работает, но проблема в том, что в тегах на сайте нет и не будет аттрибута id. Подскажите пожалуйста можно ли получить элемент по значению атрибутов "data-reactid" - они уникальны для каждого объекта на странице тега div. И что тогда нужно сделать? Заранее спасибо за любой ответ.

Serguei Kouzmine 22-08-2019 23:55 2885161

поставьте
Код:

@
в аргумент чтоб с указанным аттрибутом искать

Код:

div[@data-reactid]

Sham 23-08-2019 19:38 2885235

потому что sr в строке - это просто sr.
Код:

"div[data-reactid=\"" + sr +"\"]"
либо шаблонная строка
Код:

`div[data-reactid="${sr}"]`


Время: 17:16.

Время: 17:16.
© OSzone.net 2001-