am_dot_com

SW 2023-04-19

Apr 19th, 2023 (edited)
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.94 KB | None | 0 0
  1. // 3.js
  2. window.onload = boot;
  3.  
  4. const DIAS_DA_SEMANA_PT = [
  5. "Domingo", "Segunda", "Terça",
  6. "Quarta", "Quinta", "Sexta",
  7. "Sábado"
  8. ]
  9.  
  10. const ID_ANO = "idAno",
  11. ID_MES = "idMes",
  12. ID_DIA = "idDia",
  13. ID_FORM_DDS = "idFormDDS",
  14. ID_SPAN_DDS = "idSpanDDS";
  15.  
  16. var oAno, oMes, oDia, oFormDDS,
  17. oSpanDDS; //todos undefined
  18.  
  19. function boot(){
  20. //assocs
  21. oAno = id(ID_ANO);
  22. oMes = id(ID_MES);
  23. oDia = id(ID_DIA);
  24.  
  25. oFormDDS = id(ID_FORM_DDS);
  26. oSpanDDS = id(ID_SPAN_DDS);
  27.  
  28. /*
  29. var a1 = ["coisa", "coisa2"];
  30. var a2 = new Array();
  31. a2.push("coisa");
  32. a2.push("coisa 2");
  33. */
  34.  
  35. var aRelevantes = [
  36. oAno, oMes, oDia, // os inputs
  37. oFormDDS, // not in use
  38. oSpanDDS // onde aparecerá a resposta
  39. ];
  40.  
  41. var bOK = qualityControl( aRelevantes );
  42.  
  43. if (!bOK) {
  44. window.alert("Objeto relevante indisponível. Fim.");
  45. return;
  46. }
  47.  
  48. //comportamentos
  49. oAno.onchange = ehDarFeedbackSeDataValida;
  50. oMes.onchange = ehDarFeedbackSeDataValida;
  51. oDia.onchange = ehDarFeedbackSeDataValida;
  52.  
  53. oAno.onchange = oMes.onchange =
  54. oDia.onchange = ehDarFeedbackSeDataValida;
  55. }// boot
  56.  
  57. function ehDarFeedbackSeDataValida(pE){
  58. var evento = pE ? pE : window.event;
  59. var onde =
  60. evento.target ? evento.target : evento.srcElement;
  61.  
  62. //onde representa ONDE originou
  63.  
  64. var bMudouAno = onde.id==ID_ANO;
  65. var bMudouMes = onde.id==ID_MES;
  66. var bMudouDia = onde.id==ID_DIA;
  67.  
  68. var a,m,d;
  69. a = Number(oAno.value);
  70. m = Number(oMes.value);
  71. d = Number(oDia.value);
  72.  
  73. var bDataValida = data_valida(
  74. a,m,d
  75. )
  76.  
  77. var strValida = bDataValida ?
  78. "Data OK" : "Data inválida!"
  79.  
  80. //cumulativa
  81. oSpanDDS.innerHTML=
  82. "<br><mark>"+strValida+"</mark>"+
  83. oSpanDDS.innerHTML;
  84.  
  85. return false;
  86. }//ehDarFeedbackSeDataValida
  87.  
  88.  
  89. function dds(){
  90. var dds;
  91.  
  92. // declaração + instanciação de
  93. // um objeto do tipo Date
  94. // correspondente à data do utilizador,
  95. // entrada pela form
  96.  
  97. var agora = new Date();
  98. var hoje20230419 = new Date(
  99. 2023,
  100. 4-1, // os meses em Date são 0-based
  101. 19
  102. );
  103.  
  104. var ano, mes, dia;
  105. ano = Number(oAno.value);
  106. mes = Number(oMes.value);
  107. dia = Number(oDia.value);
  108.  
  109. var dataCorrespondenteAosInputs =
  110. new Date(
  111. ano,
  112. mes-1,
  113. dia
  114. );
  115.  
  116. var bOK = data_valida(
  117. ano, mes, dia
  118. )
  119.  
  120. if(bOK) {
  121.  
  122. // getDay retorna um int em [0, 6]
  123. dds =
  124. dataCorrespondenteAosInputs.getDay()
  125.  
  126. //oSpanDDS.innerHTML = dds;
  127.  
  128. // alt1 - if-else
  129. if (dds == 0)
  130. frase_dds = "domingo";
  131. else if (dds == 1)
  132. frase_dds = "segunda";
  133. else if (dds == 2) frase_dds = "terça";
  134. else if (dds == 3) frase_dds = "quarta";
  135. else if (dds == 4) frase_dds = "quinta";
  136. else if (dds == 5) frase_dds = "sexta";
  137. else if (dds == 6) frase_dds = "sábado";
  138.  
  139. // alt2 - switch
  140. switch (dds) {
  141. case 0:
  142. frase_dds = "domingo";
  143. break;
  144. case 1:
  145. frase_dds = "segunda";
  146. break;
  147. case 2:
  148. frase_dds = "terça";
  149. break;
  150. case 3:
  151. frase_dds = "quarta";
  152. break;
  153. case 4:
  154. frase_dds = "quinta";
  155. break;
  156. case 5:
  157. frase_dds = "sexta";
  158. break;
  159. case 6:
  160. frase_dds = "sábado";
  161. break;
  162. default:
  163. frase_dds = "dia impossível";
  164. break;
  165. }//switch
  166.  
  167. //alt3 - Arrays
  168. frase_dds = DIAS_DA_SEMANA_PT[dds];
  169.  
  170. oSpanDDS.innerHTML = frase_dds;
  171. }
  172. }
Advertisement
Add Comment
Please, Sign In to add comment