none
Por que apenas o meu primeiro alerta é disparado ? RRS feed

  • Pergunta

  • Boa Tarde 

    Por que apenas o meu primeiro alerta é disparado na minha função javascript abaixo ?

    <script>           
      function ddAddressItem_change(valor)
      {
         if (valor == "54" || valor == "51" || valor == "63" || valor == "64" || valor == "65" || valor == "66" || valor == "67" || valor == "44") 
         {
             alert("Atenção: Nesta opção de envio será cobrado a taxa  a pagar do sedex conforme sua região.");

         }
         

         if (valor == "39" || valor == "40" || valor == "41" || valor == "42" || valor == "43" || valor == "44" || valor == "45" || valor == "46" || valor == "47" || valor == "48" || valor == "49" || valor == "50" || valor == "51" || valor == "52" || valor == "53" || valor == "54" || valor == "55" || valor == "56" || valor == "57" || valor == "58" || valor == "59" || valor == "60" || valor == "61" || valor == "62") 
         {
            var data = new Date();
            var dia = data.getDay();
            if (dia > 8)
            { 
               alert("Atenção: Prazo limite para compra foi finalizado");
            }       
         }

      }

      function bodyLoad()
      {
         ddAddressItem_change(document.getElementById('ddAddressItem').value);
      }  
    </script>

    terça-feira, 16 de agosto de 2016 16:28

Respostas

Todas as Respostas

  • Qual é o conteudo da variavel valor? Qual é o alert que é disparado? O "Atenção: Nesta opção de envio será cobrado a taxa  a pagar do sedex conforme sua região." ou o "Atenção: Prazo limite para compra foi finalizado"?

    Os criterios nao sao os mesmos.. ela só vai disparar os dois alertas se forem respeitados os criterios dos dois IFs.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 16 de agosto de 2016 16:36
    Moderador
  • É disparado apenas o 1 alerta:

    alert("Atenção: Nesta opção de envio será cobrado a taxa  a pagar do sedex conforme sua região.");

    O conteúdo da variavel valor é 54 neste caso entra nas 2 condições. Porem só o 1 alerta é disparado.

    O que esta errado ?

    Como resolver  esse problema ?

    Fico no aguardo.

    Obrigado

    terça-feira, 16 de agosto de 2016 16:49
  • Poderia nos explicar o que voce pretende fazer aqui:

    var data = new Date();
    var dia = data.getDay();

    porque a funcao getDay traz o dia da semana (de 0 a 6), portanto o resultado true da expressao  dia > 8 nunca vai ocorrer.

    aqui esta a documentaçao: http://www.w3schools.com/jsref/jsref_getday.asp

    Caso voce queira o dia do mes, a funçao correta é getDate: 

    http://www.w3schools.com/jsref/jsref_getdate.asp

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    terça-feira, 16 de agosto de 2016 17:47
    Moderador
  • Ele sempre ira executar uma vez pois não esta associando a nenhum evento de um elemento

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    terça-feira, 16 de agosto de 2016 18:31
  • Realmente o colega Ricardo esta certo, o comando correto a se usar no seu caso é o getDate() para que possa pegar o dia do mes, refiz sua função e tomei a liberdade de melhorar seus IF(s), temos que tomar muito cuidado quando se faz instruções como a que fez, procure sempre fatorar e ver no que pode melhorar isto melhora a performance do programa, melhora o entendimento do código evita que você se perca em sua logica, sem falar na manutenção né.

    Veja a possibilidade de normalizar seu banco e em vez de fazer um if monstruoso procure deixar status para que possa melhorar a maneira de saber se tem frete ou não e os pedidos que não podem ser enviados após determinado prazo.

    Segue seu código reescrito

    <script>
        function ddAddressItem_change(valor)
        {
    
            if (valor == "44" || valor == "51" || valor == "54" || valor >= "63" && valor <= "67")
            {
                alert("Atenção: Nesta opção de envio será cobrado a taxa  a pagar do sedex conforme sua região.");
    
            }
    
    
            if (valor >= "39" && valor <= "62")
            {
                var data = new Date();
                var dia = data.getDate();
                if (dia > 8)
                {
                    alert("Atenção: Prazo limite para compra foi finalizado");
                }
            }
    
        }
    
        
        function bodyLoad()
        {
            ddAddressItem_change(document.getElementById('ddAddressItem').value);
        }
        
    </script>


    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br



    quarta-feira, 17 de agosto de 2016 03:36