Estoy tratando de cambiar inputX[0] de false a true , luego recibo una alerta si funcionó. Desafortunadamente, no recibo el mensaje de que inputX[0] se configuró en true . ¿Tienes alguna idea?
<body> <div> <button id="S1" onclick="btnManager(this);"></button> </div> <script> var inputX = new Array(); definedInputs(); btnManager(); question(); function definedInputs() { inputX[0] = false; } function btnManager(pressedBtn) { if (pressedBtn.id == (id = "S1")) { inputX[0] = true; } } function question() { if (inputX[0] == true) { alert("inputX is set to true"); } } </script> </body>prueba con esto:
<body> <div> <button id="S1" onclick="btnManager(this);"></button> </div> <script> var inputX = new Array(); inputX[0] = false; function btnManager(pressedBtn) { inputX[0] = !inputX[0]; alert(inputX[0]); } </script> </body>Con esto, cada vez que presione el botón, el valor se establecerá mediante la negación del valor actual, espero que ayude.
Es importante que comprenda el ciclo de vida de Js. Primero se construyen los objetos y funciones javascript y luego se ejecuta el código, en este caso sucede de la siguiente manera:
Todo esto sucede antes de que puedas presionar el botón. Al presionar el botón se ejecuta "btnManager(this)" y dado que el id es igual a "S1", el estado de "inputX[0]" cambia a verdadero.
Pero no puede ver este cambio porque la función "pregunta ()" ya se ha ejecutado.
Probar:
<!DOCTYPE html> <html> <body> <div> <button id="S1" onclick="btnManager(this);">Test</button> </div> <script> var inputX = new Array(); definedInputs(); function definedInputs() { inputX[0] = false; } function btnManager(pressedBtn) { if (pressedBtn.id == "S1") { inputX[0] = true; } question(); } function question() { if (inputX[0] == true) { alert("inputX is set to true"); } } </script> </body> </html>Agregue algunos registros de la consola para ver qué está sucediendo. Si lo hace, verá que todas sus funciones se ejecutan inmediatamente. Cuando hace clic en el botón e ingresa la función btnManager() , ¿qué sucede a continuación? Como verá, su código está ejecutando la función btnManager() pero, ¿qué pasa con la verificación de su alerta?
Si llama a question() después de su declaración if, ejecutará su verificación nuevamente.
Podría hacer esto con menos líneas, pero en aras de mantener su código exacto y hacer que funcione, así es como lograría su objetivo:
<body> <div> <button id="S1" onclick="btnManager(this);"></button> </div> <script> var inputX = new Array(); // You could really remove these and do it like Lucretius's Answer definedInputs(); btnManager(); question(); function definedInputs() { inputX[0] = false; } function btnManager(pressedBtn) { if (pressedBtn.id == (id = "S1")) { inputX[0] = true; } question(); } function question() { if (inputX[0] == true) { alert("inputX is set to true"); } } </script> </body>