Не удается получить элемент по маске “атрибут = значение” через querySelector [дубликат]

187
05 июня 2019, 14:30

На данный вопрос уже ответили:

  • Передача переменной внутрь двойных кавычек JQuery, метод .load() 1 ответ

Имеется конструкция вида:

<div id='lawdocument'>
    <div blockOrder = '1'></div>
    <div blockOrder = '2'></div>
</div>

Мне необходимо получить элемент div, который удовлетворяет требованиям [blockOrder = '2']. Я написал следующее выражение и оно работает нормально:

takerDIV = lawDocument.querySelector('div[blockOrder = "2"]');

Но если я хочу вместо значения "2" подставить переменную blockValue=2 то получить элемент никак не удается:

takerDIV = lawDocument.querySelector('div[blockOrder = blockValue]');
console.log(takerDIV); // null
takerDIV = lawDocument.querySelector('div[blockOrder = "blockValue"]');
console.log(takerDIV); // null
takerDIV = lawDocument.querySelector('div[blockOrder = (blockValue)]');
console.log(takerDIV); //  Uncaught DOMException: Failed to execute 'querySelector' on 'Element': 'div[blockOrder = (blockValue)]' is not a valid selector.

Помогите пожалуйста.

Answer 1

Потому что Вы неправильно подставляете переменную в строку - её надо конкатенировать:

const blockValue = 2; 
const takerDIV = document.querySelector('div[blockOrder="'+blockValue+'"]'); 
console.log(takerDIV)
<div id='lawdocument'> 
    <div blockOrder='1'></div> 
    <div blockOrder='2'></div> 
</div>

Answer 2

В коде переменная неправильно вставлена в выражение, есть два варианта, как исправить эту ошибку 1.

const blockValue = 2;
const takerDIV = document.querySelector('div[blockOrder="'+blockValue+'"]');
  1. При помощи EcmaScript
takerDiv = lawDocument.querySelector('div[blockOrder=${blockValue}]');
READ ALSO
Верстка блока цитат внутри табов со слайдером

Верстка блока цитат внутри табов со слайдером

Хочу поинтересоваться - как сверстать такой вот интересный блок?

224
Запретить кэширование сайта

Запретить кэширование сайта

Как можно ввести запрет на кэширование сайта или заставить браузер перезагружать все данные с сервера? Сайт - одностраничник и не имеет большого...

178
Замена четырех блоков одним. Анимация

Замена четырех блоков одним. Анимация

У меня есть анимация из 4 блоков текстаВ комп версии все работает как надо(там 4 блока), но в адаптивной версии мне нужен только один блок текста...

163
Получение имени массива из тега &lt;select&gt;

Получение имени массива из тега <select>

Есть раскрывающийся список:

195