Logo Hardware.com.br
Gabriel Rochadel
Gabriel Roch... Super Participante Registrado
359 Mensagens 31 Curtidas

[Resolvido] como adicionar classe com javascript no elemento html

#1 Por Gabriel Roch... 24/11/2023 - 16:32
olá eu criei no html varias div com a classe minha image, e dentro da div adicionei img e coloquei a imagem
porém queria clicar na div e adicionar uma classe na div que cliquei, existe alguma maneira de fazer isso?


do jeito que fiz não importa se clico na imagem 1 ou 2 ou 3, sempre é adicionado a classe na div 1,
eu queria clicar na img 3 e a classe for adicionada somente na img 3, porém sempre é adicionado a classe na
div 1.

existe alguma maneira de fazer com que seja adicionado somente na div que eu cliquei ou eu vou ter que criar uma função diferente para cada elemento div?

eu fiz desse jeito: veja imagem anexada Anexo do postAnexo do post

Anexos

Responder
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
26/11/2023 - 03:21
Gabriel Roch... disse:
existe alguma maneira de fazer com que seja adicionado somente na div que eu cliquei ou eu vou ter que criar uma função diferente para cada elemento div?

Rapaz, existem várias maneiras de fazer! - Tantas que fica difícil determinar o melhor "modo" (algoritmo) aplicável: falo das regras CSS que determinam o comportamento da Div em relação à imagem, inclusive.

Pode ser completamente automático, semi-automático ou deixar tudo por conta do programador.

O modo mais "fácil" é por conta do programador através da passagem de parâmetro a cada chamada da função
<div onclick="aumentaimg(this)".....
...
function aumentaimg(element) {
  ...

Neste caso 'element' chegará diretamente, podendo ser removida a declaração existente na função.

O semi-automático consiste em inserir e deixar um sinal ou aviso (flag) que identifique o 'element' para o Javascript.
É mais trabalhoso porque além de escolher qual, onde e como o Javascript deverá capturar esse sinal que pode variar até pelo design, porquanto afeta todos os elementos podendo inclusive inverter o comportamento nativo de cada um, conforme mencionado.
- Vamos supor que como 'sinal' se aplique um ID numérico diferente para cada Div a qual contenha imagens e que as regras CSS não interfiram nos objetos em questão; nesse caso, tanto o clique nas imagens como nas Divs serão percebidos, certo? Deste modo, uma e outra deverá conter o sinal correspondente que será utilizado pelo JS.
<div id="1" slot="1" onclick="aumentaimg()"...>
  <img slot="1".....
...
function aumentaimg() {
  let alvo = event.target;
  let element = document.getElementById(alvo.slot);
  ...

Caso as Divs com imagens se encontrem dentro de um envelope exclusivo (container), no lugar da flag é possível acessar diretamente por seu índice cada Div, como filhas deste (children, nodes, etc.) - Explica, como dito, que são variadas as possibilidades de acesso.

No modo totalmente automático o comando é com o DOM:
<div class="minhaimg">
  ...
<div class="minhaimg">
  ...
<div class="minhaimg">
  ...

<script>
  let divList = document.querySelectorAll('.minhaimg');
  divList.forEach(el => el.addEventListener('click', aumentaimg));
  function aumentaimg() {
    let element = event.target;
    if (element.nodeName === 'IMG') element = element.parentNode;
    element.classList.toggle('aumentaimg1')
}
</script>


wink.png Bom proveito!
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal