2
respostas

sintaxe não explicada

document.querySelector("[data-id='"+item.id+"']")

eu entendo a funcionalidade de Query Selector e data-attributes, porém não compreendi o porquê de tantas aspas e essas concatenações (+).

2 respostas

Exemplo de elemento com data-id

<li class="item" data-id="00">

QuerySelector:

document.querySelector( " [data-id=' " + item.id + " '] " )

O código poderia ter sido escrito de outra forma, mas as aspas duplas internas são as aspas duplas que estão na tag HTML. Coloquei em negrito a parte que vem depois do = na tag HTML. Os sinais de + são apenas pra concatenação.

document.querySelector("[data-id='"+item.id+"']")

Para exemplificar o porque tantas aspas, quando escrevemos um querySelector com um data attribute precisamos escrever ele da seguinte forma:

document.querySelector("[data-id]")

no lugar do ID podemos escrever algo como columns ou parents ou como muitos utilizam o exemplo de fazer um carro poderia ser data-marca exemplo:

document.querySelector("[data-marca]")

mas quando temos mais de uma "marca" ou "id" colocamos especificamente qual a "marca" ou qual o "id" que ele leva para assim diferenciar ele dos outros que levam o mesmo data attribute "id" e encontrarmos somente ele. neste caso temos vários itens com:

<li class="item" data-id="00">

só mudando o valor do "id" dele. assim quando vamos construir esse código confuso temos que passar o identificador do data attribute que por si só contem

document.querySelector("[data-]")

adicionamos o nome do nosso data atribute que seria o "id":

document.querySelector("[data-id=

e para finalizar ele temos que concatenar o valor do "id" que esta dentro da variável "item.id", sendo assim montamos toda a estrutura:

document.querySelector("[data-id=' ']")

e para concatenar temos que abrir um espaço entre as aspas simples, o melhor jeito é fechar logo após ela e abrir logo após a variável:

document.querySelector("[data-id='" + item.id + "']")

lembrando que o "+" serve para juntar a primeira parte com a segunda concatenando ela. (no caso não é uma soma e sim uma junção). espero que tenha ajudado