Problemas com NaN

Alguém pode me ajudar com este site. A parte frontal exibe os preços só que logo abaixo exibe novamente com NaN. Quando entra em qualquer produto, o NaN desaparece. Alguma dica de como posso resolver isso?

Algum truque para “ocultar” a frase com o NaN na tela frontal seria interessante.

O site: https://jsfiddle.net/brunoarchanjo88/x7tgas48/

Existe uma função em js que verifica se é nan…

if (!isNaN(numero)) {
    //imprime preço...
}

Olhei rapidamente o código e vi chamada a função setInterval, imagino ser algo rodando até a página terminar de carregar acertei?

Se for isso, uma boa prática hoje em dia é colocar todo seu script js no final da página antes de body…

    <script>
    //js aqui....
    </script>
</body>

Isso evita problemas de carregamento e não é mais necessário funções de intervalo, já que na ordem todos os elementos da página foram carregados no DOM…

Bom, na verdade fiz uma “gambiarra” para funcionar este código. É um site que vem de uma outra plataforma. Então fiz uma modificações nele no front para imprimir aquelas frases com divisões de preços que não tinha antes. Falta apenas conseguir consertar esse “bug” do NaN que aparece na página.

Quero eliminar a frase “3x de NaN sem juros”, sem eliminar a frase que está dentro dos produtos quando entro.

Você precisa identificar esse elemento que quer esconder, por exemplo uma div com id…

<div id="podeTerNaN">
    3x de NaN sem juros
</div>

La no js você testa usando a função…

var mostra = 'block';

if (isNaN(numero)) {
    mostra = 'hidden';
}

document.getElementById('podeTerNaN').style.display = mostra;

Tentei isso e nada no jsfiddle

var counter = 0
var timer = setInterval(function(){
if(counter >= 0){
  $("h5").remove()
}
counter++
    var demo = $('div.ecwid-productBrowser-price');
        demo.each(function() {
        var valor = parseInt(this.innerHTML.replace(/\./g, '').replace(',','.').substr(2) / 3, 10).toFixed(2).replace('.',',')
            $(this).after("<h5 class='demo' style='color: #e9d0ba;font-size:15px;'>3x de " +valor+ " sem juros </h5>")
            var mostra = 'block';

            if (isNaN(demo)) {
                mostra = 'none';
            } else{

            document.getElementById('podeTerNaN').style.display = mostra
            }     
    })        
}, 1000)

O segredo pra imprimir o nan está aqui…

$(this).after("<h5 class='demo' style='color: #e9d0ba;font-size:15px;'>3x de " +valor+ " sem juros </h5>")

Você precisa colocar o if na variavel valor…

var valor = parseInt(this.innerHTML.replace(/\./g, '').replace(',','.').substr(2) / 3, 10).toFixed(2).replace('.',',')

if (!isNaN(valor)) {
    $(this).after("<h5 class='demo' style='color: #e9d0ba;font-size:15px;'>3x de " +valor+ " sem juros </h5>");
}

Perceba que coloquei uma exclamação ! na frente do isNaN, isso diz ao js… se o valor não for NaN, imprime o texto… pegou? boa sorte!

Ok. Entendi! Consegui de uma outra forma aqui:

var counter = 0
var timer = setInterval(function(){
    if($(".ecwid-productBrowser-details").is(":visible")){
        mostra = "";
    }else{
        mostra = "display: none;";
    }
if(counter >= 0){
  $("h5").remove()
}
counter++
    var demo = $('div.ecwid-productBrowser-price');
        demo.each(function() {
        var valor = parseInt(this.innerHTML.replace(/\./g, '').replace(',','.').substr(2) / 3, 10).toFixed(2).replace('.',',')
            $(this).after("<h5 class='demo' style='"+mostra+"color: #e9d0ba;font-size:15px;'>3x de " +valor+ " sem juros </h5>")
    })        
    }, 1000)