Solo trato de mejorar mi calidad de codificación... probablemente haya forzado esto bruscamente, ¿me pregunto si hay una manera más eficiente de codificarlo? La tarea: obtengo entradas de 3 menús desplegables de HTML y luego paso una entrada de usuario (m_px) para obtener un retorno de una hoja de Google (drawx) y luego lo escribo de nuevo en la página web. Lo siguiente funciona bien... simplemente parece mucho código/vars para una tarea simple... ¿cómo podría codificarlo mejor? Por ejemplo, ¿cómo puedo reemplazar getDrawNumOne a Three con una sola función? Una nota adicional: en el script actual, estas funciones ascienden a getDrawNumEight(!). Gracias por el consejo/entrada.
document.getElementById("btn").addEventListener("click",doStuff); document.getElementById("m_p1").addEventListener("onchange",getDrawNumOne); document.getElementById("m_p2").addEventListener("onchange",getDrawNumTwo); document.getElementById("m_p3").addEventListener("onchange",getDrawNumThree); function getDrawNumOne(){ var drawNumOne = document.getElementById("m_p1").value; google.script.run.withSuccessHandler(updateDrawNumOne).getDrawNo(drawNumOne); } function updateDrawNumOne(drawNumReturnOne){ document.getElementById("draw1").value = drawNumReturnOne; } function getDrawNumTwo(){ var drawNumTwo = document.getElementById("m_p2").value; google.script.run.withSuccessHandler(updateDrawNumTwo).getDrawNo(drawNumTwo); } function updateDrawNumTwo(drawNumReturnTwo){ document.getElementById("draw2").value = drawNumReturnTwo; } function getDrawNumThree(){ var drawNumThree = document.getElementById("m_p3").value; google.script.run.withSuccessHandler(updateDrawNumThree).getDrawNo(drawNumThree); } function updateDrawNumThree(drawNumReturnThree){ document.getElementById("draw3").value = drawNumReturnThree; }Descripción
En lugar de realizar múltiples devoluciones de llamada onChange, la función de devolución de llamada siempre tiene un objeto de evento pasado, aunque la mayoría de los ejemplos no lo muestran. Puede examinar el objeto de evento para ver en qué elemento se hizo clic o se modificó e ir desde allí.
En este caso uso una function getDrawNumber(evt){
Guion
document.getElementById("btn").addEventListener("click",doStuff); document.getElementById("m_p1").addEventListener("change",getDrawNumber); document.getElementById("m_p2").addEventListener("change",getDrawNumber); document.getElementById("m_p3").addEventListener("change",getDrawNumber); function getDrawNumber(evt){ // evt is the event that occured // evt.target is the element that was changed // evt.target.id is one of the element's id google.script.run.withSuccessHandler( function(drawNumReturn) { var draw = null; switch(evt.target.id) { case "m_p1": draw = 'draw1'; break; case "m_p2": draw = 'draw2'; break; case "m_p3": draw = 'draw3'; break; } if( draw ) document.getElementById(draw).value = drawNumReturn; } ).getDrawNo(evt.target.value); }Referencias