am_dot_com

SW 2023-04-14

Apr 14th, 2023 (edited)
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.30 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Testador de expressões JS</title>
  6. <script src="2.js"></script>
  7. </head>
  8. <body>
  9. <form id="id_form_computadora_de_expressoes">
  10. <label for="id_text_exp">A tua expressão: </label>
  11. <input type="text"
  12. id="id_text_exp"
  13. placeholder="aqui uma expressão">
  14. <!-- onde a expressão possa ser escrita -->
  15. <input type="submit"
  16. value="computar a expressão"><!-- sinalizar q a expressão está pronta para computação -->
  17. </form>
  18. <hr>
  19. <section id="id_realtime_results"></section>
  20. <br>
  21. <section id="id_section_resultados"></section>
  22. </body>
  23. </html>
  24.  
  25. *******************
  26.  
  27. window.onload = boot
  28.  
  29. const ID_FORM = "id_form_computadora_de_expressoes";
  30. const ID_EXP = "id_text_exp";
  31. const ID_REALTIME_RESULTS = "id_realtime_results";
  32. const ID_RESULTADOS = "id_section_resultados";
  33.  
  34. var oForm, oExp, oResultados, oRealTimeResults;
  35.  
  36. function id(pId) {
  37. return document.getElementById(pId);
  38. }
  39.  
  40. function boot() {
  41. //1 - associações entre els HTML e objs do JS
  42. oForm = id(ID_FORM);
  43. oExp = id(ID_EXP);
  44. oResultados = id(ID_RESULTADOS);
  45. oRealTimeResults = id(ID_REALTIME_RESULTS);
  46.  
  47. // controlo de qualidade (assegurar-nos da disponibilidade de todos os elementos relevantes para o sistema web)
  48. var relevantes = [oForm, oExp, oResultados, oRealTimeResults];
  49. var bOK = true;
  50. for (var coisa of relevantes) {
  51. bOK = bOK && (coisa != null);
  52. }//for
  53.  
  54. if (!bOK) {
  55. window.alert("Um elemento relevante indisponível. STOP.")
  56. return;
  57. } else {
  58. //window.alert("Tudo OK");
  59. }
  60.  
  61. //2 - conferir comportamentos
  62. oExp.oninput = ir_mostrando_resultado;
  63. oForm.onsubmit = mostrar_resultado;
  64. }//boot
  65.  
  66. function ir_mostrando_resultado(){
  67. try{
  68. var r = eval(oExp.value.trim())
  69. oRealTimeResults.innerHTML ="<mark>"+r+"</mark>"
  70. }
  71. catch (err){
  72. oRealTimeResults.innerHTML ="<mark>Não computa.</mark>"
  73. }
  74.  
  75. return false; // neste caso é desnecessário
  76. }//ir_mostrando_resultado
  77.  
  78. function mostrar_resultado(pE) {
  79. var evento = pE ? pE : window.event;
  80. var objeto = evento.target ? evento.target : evento.srcElement;
  81.  
  82. // computar e mostrar os resultados
  83. var expressaoParaSerCalculada = oExp.value.trim();
  84. var resultadoDaComputacao = ""
  85. try {
  86. resultadoDaComputacao = eval(
  87. expressaoParaSerCalculada
  88. );
  89. } catch (errado /* ocorreu uma "Excepção" */) {
  90. resultadoDaComputacao = "Não computa.";
  91. } finally { // opcional + acontece SEMPRE
  92. oResultados.innerHTML = expressaoParaSerCalculada + " = " +
  93. resultadoDaComputacao + "<br>" +
  94. oResultados.innerHTML;
  95. }
  96.  
  97. return false; // não há + nada para ser feito no processamento do evento
  98. }//id_section_resultados
  99.  
  100. // quase todos os operadores em JS
  101. // aritméticos: + - * / %
  102. // atribuição: =
  103. // question-mark ternário: resultado = exp-bool ? valor-caso-true : valor-caso-false
  104. // relacionais: < <= > >= == != === !==
  105. // booleanos: ! && || & |
  106.  
  107. /*
  108. var a, b, c;
  109. a = true
  110. c = a || (b=true); // avaliação por curto-circuito
  111. c = a | (b=true); // avaliação completa
  112. window.alert(c)
  113. window.alert("b="+b)
  114. */
Advertisement
Add Comment
Please, Sign In to add comment