Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Função do scrollPlacar, Só funciona depois de inserir uns 3 registros e só funciona no Chrome. Testei no opera, firefox

function inserePlacar() {
    var corpoTabela = $(".placar").find("tbody");
    var usuario         = "Bruno Moura";
    var numPalavras = $("#contador-palavras").text();

    var linha = novaLinha(usuario, numPalavras);
    linha.find(".botao-remover").click(removerLinha);

    /* Evendo prepend adiciona a linha no inicio da tabela,
    já o append sempre adiciona no final */
    corpoTabela.prepend(linha);
    $(".placar").slideDown(500);
    scrollPlacar()
}

function scrollPlacar() {
  var posicaoPlacar = $(".placar").offset().top;
    $("body").animate(
    {
        scrollTop: posicaoPlacar + "px"
    }, 1000);
}
5 respostas

Oi Bruno, nos outros navegadores, qual o erro que acontece? Consegue ver no console do navegador?

Não acontece nenhum erro, só inseria na tabela mas não rolava o scroll para baixo, mas no Chrome deu certo

Coloca assim:

function scrollPlacar() {
  var posicaoPlacar = $(".placar").offset().top;
    $("html, body").animate(
    {
        scrollTop: posicaoPlacar + "px"
    }, 1000);
}

Fiz desse modo mas sem o body e funcionou. Mas por que isso acontece?? E só funciona desse jeito e não igual o da aula por qual motivo?? Alguém poderia me ajudar explicando?? Obrigado.

function scrollPlacar() {
  var posicaoPlacar = $(".placar").offset().top;
    $("html").animate(
    {
        scrollTop: posicaoPlacar + "px"
    }, 1000);
}

Victor, dependendo do navegador, o efeito de scroll vai funcionar se você colocar no body, outros só funciona se você colocar no html. Por isso é melhor generalizar e colocar "html, body" pra funcionar em todos os navegadores.

Isso tem a ver com a forma que o navegador interpreta e executa a função.