Ir para conteúdo
Gleyson Abreu

Confirmar se visualizou a imagem

Recommended Posts

Queria saber se a alguma maneira de confirmar que  a pessoa visualizou determinada imagem, por exemplo tenho um slideshow automático que exibi as imagens que tem um id x quero pegar esse id x é enviar pro meu banco de dados há alguma forma de fazer isso?

Tava fuçando no w3schools e encontrei um slideshow automatico o seguinte codigo:

var myIndex = 0;
carousel();
function carousel() {
    var i;
    var x = document.getElementsByClassName("mySlides");
    for (i = 0; i < x.length; i++) {
       x[i].style.display = "none";
    }
    myIndex++;
    if (myIndex > x.length) {myIndex = 1}    
    x[myIndex-1].style.display = "block";
    setTimeout(carousel, 1000); // Change image every 2 seconds
}

Queria saber se teria como eu pegar o id da imagem do slideshow que está sendo exibida na tela para enviar para o banco de dados.. já tentei de várias formas adaptar esse código mas não conseguir.

Se houver outra forma de fazer isso que expliquei da um help aqui

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dar sim, pois se cada elemento de seletor class mySlides possuir um id você pode obter esse valor logo assim:

x[myIndex-1].style.display = "block";
var identificador = x[myIndex-1].id; // Esse seria o ID do atual .mySlides

 

Nesse caso então para enviar para um salvamento em banco de dados, você pode optar por executar um ajax requisitando o arquivo que vai fazer o registro no banco informando esse valor

objeto_HttpRequest.open('GET', 'arquivo_que_salva.php?valor=' + identificador, true);

Nesse caso tem que criar a estrutura do protocolo pois só informei como fazer o envio. Pois o "arquivo_que_salva.php" sempre vai receber $_GET['valor']; que é o id passado pela função javascript

 

Só que desaconselho isso... Porque?

 Na sua função você tem:

setTimeout(carousel, 1000);

Ao qual a cada 1 segundo ele troca de imagem, então a cada 1 segundo será uma query executada, agora imagine se 1.000 pessoas estiverem acessando. Isso são 1000 querys por segundo (coitado do seu servidor), sem contar que alguém pode abrir o inspetor e alterar o javascript para setTimeout(carousel, 1); executando uma query a cada 1ms

 

Mas sei lá, se fosse para eu fazer iria tentar da forma que falei.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana. Só puxando o gancho, não teria como "proteger" a edição do time usando POO? tipo, criar uma função com atributo private e criar um método getter que retorna o valor desse atributo privado. Sou iniciante e estava estudando isso, fiquei com a dúvida.

 

 

Bacana. Só puxando o gancho, não teria como "proteger" a edição do time usando POO? tipo, criar uma função com atributo private e criar um método getter que retorna o valor desse atributo privado. Sou iniciante e estava estudando isso, fiquei com a dúvida.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Camila97
      Olá, estou tendo dificuldades em um site onde preciso desenvolver um modal ao clicar no botão X para excluir uma despesa, porém, o botão X foi criado no arquivo .js :
      //botão de excluir: let btn = document.createElement("button") btn.className = 'btn btn-danger' btn.innerHTML = '<i class="fas fa-times"></i>' btn.id = `id_despesa_${d.id}` btn.onclick = function(){ let id = this.id.replace('id_despesa_', ''); bd.remover(id) window.location.reload() } linha.insertCell(4).append(btn) console.log(d) Toda despesa criada, automaticamente é adicionado o botão X ao lado da despesa.
      Como poderia fazer aparecer um modal ao clicar nele, para saber se o usuário quer cancelar ou excluir a despesa?
    • Por tiagosp
      Estou tentando aplicar uma simples expressão com js, porém o resultado não é como esperado:
      var horasP = document.getElementById("horas_p").value; //Valor de entrada: 5 var minP = document.getElementById("min_p").value; // Valor de entrada: 45 horasP *= 60 + minP; console.log(horasP); saída: 30045 Ocorre uma concatenação na saída, ele executa somente a multiplicação.
      Pensei ser um erro na minha expressão, então tentei:
      horasP *= 60; horasP += minP; saída: 30045 Além disso, o operador "/=" simplesmente não funciona...
    • Por Brxlx
      Estou tentando inserir essa lógica no scroll da minha página, ele pega corretamente a condição do ife entra no laço. Para todos os demais elementos da página que geram o scroll, ele rola certo, apenas para o button#conheca que não consigo fazer o cálculo da altura. Preciso que ele pegue o offset e some com a altura, devido ao menu que abre em mobile, mas ele está sendo sobrescrito pelo scrollTop anterior.
      Com qual função devo verificar para executar corretamente a lógica?
      if($(window).width() <= 768){ $("html, body, button:not(#conheca)").animate({ scrollTop: (target.offset().top - $(window).height()) }, 1000, "easeInOutExpo"); return false; $("#conheca").on("click", function(){ $('#conheca').animate({ scrollTop: (target.offset().top + $(window).height()) }, 1000, "easeInOutExpo"); return false; }); }else{ $('html, body').animate({ scrollTop: (target.offset().top) }, 1000, "easeInOutExpo"); return false; }
    • Por Bisnaguitos
      Estou tentando pegar dados de algumas ordens de uma API. Primeiro preciso pesquisar todas as ordens com uma requisição e depois de pegar o id dessas ordens fazer outra requisição para outra uri da API para pegar os dados de cada ordem. O problema é que não consigo resgatar os dados de retorno através de um array.
      Segue uma tentativa sem sucesso
      // request de busca const data = await request.get("api.com/search", async(err, data, body)=>{ var arr = [] for(i=0;i<data.length;i++){ const result = await request.get("api.com/order/"+data.id, (e, d, b)=>{ arr.push(d.title) return arr }) } return result; }) console.log(data) Fiz esse código pelo celular só pra exemplificar um dos métodos. Alguém sabe como posso fazer isso funcionar ou se tem uma maneira mais fácil? Obrigado
    • Por M4RC0S J0S3 S1LV4
      Me desculpe, mas eu estou com um grande problema, acho que é fácil, mas para mim está sendo muito perturbador pois sou iniciante de JavaScript vamos lá.
      Eu queria saber como fazer 1 input preencher 2 input, tipo.. tem 3 input A e todos os input A forem preenchidos e no B a mesma coisa só muda que seja só o Input B. entendem? estou necessitando desta super ajuda.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.