Função Javascript com erro NaN
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.
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
Curtidas 0
Melhor post
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;
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
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. :)
Abraço, se ainda não resolveu, essa é sua solução.
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