Função Javascript com erro NaN

HTML

JavaScript

Front-end

08/11/2017

Olá.

Estou encontrando um problema ao executar essa fórmula, pois a resposta final é dada como NaN.

De uma forma simplificada para explicar o código, ela funciona assim: existem dois grupos de três variáveis, e dependendo do valor que você atribuido a cada uma delas, ela vale uma certa quantidade de pontos. Por exemplo, se for atribuido o número 89 para a variável (NUMERO2), sua equivalente no outro grupo, a variável (BPM_TRUE) será igual a 3 pontos. Ao final, as três variáveis principais são multiplicadas e somadas a partir de uma fórmula específica, resultando no valor de (RTS_TRUE).

Alguém consegue entender o que esta acontecendo? Já tentei mudar para float, mas sem sucesso.


<body>
  <script type="text/javascript">
    // <![CDATA[
    /* Calculadora RTS Ivana Mendonca */

    var ECG_TRUE;
    var NUMERO1;
    if (NUMERO1 == '15' || NUMERO1 == '14' || NUMERO1 == '13') {
      ECG_TRUE = 4
    } else
    if (NUMERO1 == '09' || NUMERO1 == '10' || NUMERO1 == '11' || NUMERO1 == '12') {
      ECG_TRUE = 3
    } else
    if (NUMERO1 == '06' || NUMERO1 == '07' || NUMERO1 == '08') {
      ECG_TRUE = 2
    } else
    if (NUMERO1 == '04' || NUMERO1 == '05') {
      ECG_TRUE = 1
    } else
    if (NUMERO1 == '00') {
      ECG_TRUE = 0
    }

    var BPM_TRUE;
    var NUMERO2;
    if (NUMERO2 > '89') {
      BPM_TRUE = 4
    } else
    if (NUMERO2 == '89' || NUMERO2 == '88' || NUMERO2 == '87' || NUMERO2 == '86' || NUMERO2 == '85' || NUMERO2 == '84' || NUMERO2 == '83' || NUMERO2 == '82' || NUMERO2 == '81' || NUMERO2 == '80' || NUMERO2 == '79' || NUMERO2 == '78' || NUMERO2 == '77' || NUMERO2 == '76') {
      BPM_TRUE = 3
    } else
    if (NUMERO2 == '75' || NUMERO2 == '74' || NUMERO2 == '73' || NUMERO2 == '72' || NUMERO2 == '71' || NUMERO2 == '70' || NUMERO2 == '69' || NUMERO2 == '68' || NUMERO2 == '67' || NUMERO2 == '66' || NUMERO2 == '65' || NUMERO2 == '64' || NUMERO2 == '63' || NUMERO2 == '62' || NUMERO2 == '61' || NUMERO2 == '60' || NUMERO2 == '59' || NUMERO2 == '58' || NUMERO2 == '57' || NUMERO2 == '56' || NUMERO2 == '55' || NUMERO2 == '54' || NUMERO2 == '53' || NUMERO2 == '52' || NUMERO2 == '51' || NUMERO2 == '50') {
      BPM_TRUE = 2
    } else
    if (NUMERO2 <= '49' && NUMERO2 != '00') {
      BPM_TRUE = 1
    } else
    if (NUMERO2 == '00') {
      BPM_TRUE = 0
    }

    var FR_TRUE;
    var NUMERO3;
    if (NUMERO3 == '10' || NUMERO3 == '11' || NUMERO3 == '12' || NUMERO3 == '13' || NUMERO3 == '14' || NUMERO3 == '15' || NUMERO3 == '16' || NUMERO3 == '17' || NUMERO3 == '18' || NUMERO3 == '19' || NUMERO3 == '20' || NUMERO3 == '21' || NUMERO3 == '22' || NUMERO3 == '23' || NUMERO3 == '24' || NUMERO3 == '25' || NUMERO3 == '26' || NUMERO3 == '27' || NUMERO3 == '28' || NUMERO3 == '29') {
      FR_TRUE = 4
    } else
    if (NUMERO3 > '29') {
      FR_TRUE = 3
    } else
    if (NUMERO3 == '06' || NUMERO3 == '07' || NUMERO3 == '08' || NUMERO3 == '09') {
      FR_TRUE = 2
    } else
    if (NUMERO3 == '01' || NUMERO3 == '02' || NUMERO3 == '03' || NUMERO3 == '04' || NUMERO3 == '05') {
      FR_TRUE = 1
    }
    if (NUMERO3 == '00') {
      FR_TRUE = 0
    }

    var RTS_TRUE;

    NUMERO1 = prompt('ECG:', 'Digite aqui');
    NUMERO2 = prompt('BPM:', 'Digite aqui');
    NUMERO3 = prompt('FR:', 'Digite aqui');

    RTS_TRUE = parseInt(ECG_TRUE) * 0, 9368 + parseInt(BPM_TRUE) * 0, 7326 + parseInt(FR_TRUE) * 0, 2908;

    document.write('O resultado equivale a: ', RTS_TRUE);

    // ]]>
  </script>

</body>

Roberto

Roberto

Curtidas 0

Melhor post

Roberto

Roberto

08/11/2017

A parte da fórmula estava escrita errada. Já substituí as vírgulas por pontos, mas sem sucesso.

Essa parte estava assim...


RTS_TRUE = parseInt(ECG_TRUE) * 0, 9368 + parseInt(BPM_TRUE) * 0, 7326 + parseInt(FR_TRUE) * 0, 2908;



Agora esta assim...


RTS_TRUE = parseInt(ECG_TRUE) * 0.9368 + parseInt(BPM_TRUE) * 0.7326 + parseInt(FR_TRUE) * 0.2908;

GOSTEI 1

Mais Respostas

Marcelo Santana

Marcelo Santana

08/11/2017

Boa tarde, Roberto. Como você não está usando funções., sua lógica ficou errado porque você colocou os prompts para armazenar valores nas variáveis (NUMERO1, NUMERO2, NUMERO3 ) no final do script.

Quando você for montar um script assim.. sempre coloque os prompts no início do script. :)


<script type="text/javascript">
    // <![CDATA[
    /* Calculadora RTS Ivana Mendonca */
	
    //Essa parte que foi alterada... para parte superior.
    NUMERO1 = prompt('ECG:', '00 04 05 06 07 08');
    NUMERO2 = prompt('BPM:', '00 49');
    NUMERO3 = prompt('FR:', '00 09');
	
    var ECG_TRUE;
    var NUMERO1;
    if (NUMERO1 == '15' || NUMERO1 == '14' || NUMERO1 == '13') {
      ECG_TRUE = 4
    } else
    if (NUMERO1 == '09' || NUMERO1 == '10' || NUMERO1 == '11' || NUMERO1 == '12') {
      ECG_TRUE = 3
    } else
    if (NUMERO1 == '06' || NUMERO1 == '07' || NUMERO1 == '08') {
      ECG_TRUE = 2
    } else
    if (NUMERO1 == '04' || NUMERO1 == '05') {
      ECG_TRUE = 1
    } else
    if (NUMERO1 == '00') {
      ECG_TRUE = 0
    }

    var BPM_TRUE;
    var NUMERO2;
    if (NUMERO2 > '89') {
      BPM_TRUE = 4
    } else
    if (NUMERO2 == '89' || NUMERO2 == '88' || NUMERO2 == '87' || NUMERO2 == '86' || NUMERO2 == '85' || NUMERO2 == '84' || NUMERO2 == '83' || NUMERO2 == '82' || NUMERO2 == '81' || NUMERO2 == '80' || NUMERO2 == '79' || NUMERO2 == '78' || NUMERO2 == '77' || NUMERO2 == '76') {
      BPM_TRUE = 3
    } else
    if (NUMERO2 == '75' || NUMERO2 == '74' || NUMERO2 == '73' || NUMERO2 == '72' || NUMERO2 == '71' || NUMERO2 == '70' || NUMERO2 == '69' || NUMERO2 == '68' || NUMERO2 == '67' || NUMERO2 == '66' || NUMERO2 == '65' || NUMERO2 == '64' || NUMERO2 == '63' || NUMERO2 == '62' || NUMERO2 == '61' || NUMERO2 == '60' || NUMERO2 == '59' || NUMERO2 == '58' || NUMERO2 == '57' || NUMERO2 == '56' || NUMERO2 == '55' || NUMERO2 == '54' || NUMERO2 == '53' || NUMERO2 == '52' || NUMERO2 == '51' || NUMERO2 == '50') {
      BPM_TRUE = 2
    } else
    if (NUMERO2 <= '49' && NUMERO2 != '00') {
      BPM_TRUE = 1
    } else
    if (NUMERO2 == '00') {
      BPM_TRUE = 0
    }

    var FR_TRUE;
    var NUMERO3;
    if (NUMERO3 == '10' || NUMERO3 == '11' || NUMERO3 == '12' || NUMERO3 == '13' || NUMERO3 == '14' || NUMERO3 == '15' || NUMERO3 == '16' || NUMERO3 == '17' || NUMERO3 == '18' || NUMERO3 == '19' || NUMERO3 == '20' || NUMERO3 == '21' || NUMERO3 == '22' || NUMERO3 == '23' || NUMERO3 == '24' || NUMERO3 == '25' || NUMERO3 == '26' || NUMERO3 == '27' || NUMERO3 == '28' || NUMERO3 == '29') {
      FR_TRUE = 4
    } else
    if (NUMERO3 > '29') {
      FR_TRUE = 3
    } else
    if (NUMERO3 == '06' || NUMERO3 == '07' || NUMERO3 == '08' || NUMERO3 == '09') {
      FR_TRUE = 2
    } else
    if (NUMERO3 == '01' || NUMERO3 == '02' || NUMERO3 == '03' || NUMERO3 == '04' || NUMERO3 == '05') {
      FR_TRUE = 1
    }
    if (NUMERO3 == '00') {
      FR_TRUE = 0
    }
	console.log("ECG: "+ECG_TRUE+" - BPM: "+BPM_TRUE+" - FR: "+FR_TRUE);
	
    var RTS_TRUE;

    

    RTS_TRUE = parseInt(ECG_TRUE) * 0.9368 + parseInt(BPM_TRUE) * 0.7326 + parseInt(FR_TRUE) * 0.2908;

    document.write('O resultado equivale a: ', RTS_TRUE);

    // ]]>
  </script>




Abraço, se ainda não resolveu, essa é sua solução.
GOSTEI 0
POSTAR