Principiante de codificación aquí. Tengo una secuencia de comandos page-js debajo de la cual, cuando se cambia un menú desplegable, se activa la función getDrawNumOne, que a su vez ejecuta una función y recupera dos datos de GoogleSheet (drawNumReturnOne[0] & [1]). Quiero pasar el drawNumReturnOne[1] devuelto a través de getDrawOneNum y luego a doStuff para usarlo allí, pero estoy luchando sobre cómo hacer esto de una manera hábil, dado que no puedo llamar a variables fuera del alcance de su función. ¿Necesito múltiples retornos a través de la pila de funciones o hay otra manera mejor? Se aceptan todos los consejos, gracias.
document.getElementById("btn").addEventListener("click",doStuff); document.getElementById("m_p1").addEventListener("onchange",getDrawNumOne); function doStuff(){ var userInfo ={}; userInfo.m_p1 = document.getElementById("m_p1").value; userInfo.m_s1 = ######; google.script.run.userClicked(userInfo); } function getDrawNumOne(){ var drawNumOne = document.getElementById("m_p1").value; google.script.run.withSuccessHandler(updateDrawNumOne).getDrawNo(drawNumOne); } function updateDrawNumOne(drawNumReturnOne){ document.getElementById("draw1").value = drawNumReturnOne[0]; ###### = drawNumReturnOne[1]; }
En su situación, como un método simple, ¿qué tal la siguiente modificación?
let sample = ""; // Added document.getElementById("btn").addEventListener("click", doStuff); document.getElementById("m_p1").addEventListener("change", getDrawNumOne); // Modified function doStuff() { var userInfo = {}; userInfo.m_p1 = document.getElementById("m_p1").value; userInfo.m_s1 = sample; // Modified google.script.run.userClicked(userInfo); } function getDrawNumOne() { var drawNumOne = document.getElementById("m_p1").value; google.script.run.withSuccessHandler(updateDrawNumOne).getDrawNo(drawNumOne); } function updateDrawNumOne(drawNumReturnOne) { document.getElementById("draw1").value = drawNumReturnOne[0]; sample = drawNumReturnOne[1]; // Modified }
onchange
of document.getElementById("m_p1").addEventListener("onchange",getDrawNumOne);
es change
Pero, si su situación se puede usar como onchange
, utilícela.