let numFlag = document.getElementById("numBTN-Flag"); let callFlag = document.getElementById("callScreen"); let callDisplay = document.querySelector(".numberCalling"); let callingText = document.querySelector(".connectText"); function callCancel() { callFlag.style.display = "none"; numFlag.style.display = "block"; callDisplay.innerText = ""; display.innerText = ""; } const answerNumber = () => { numFlag.style.display = "none"; callFlag.style.display = "block"; let callDisplay = document.querySelector(".numberCalling"); callDisplay = callDisplay.innerText += display.innerText; const callText = () => { if (callDisplay.length >= 9) { let callingText = document.querySelector(".connectText"); callingText = callingText.innerText = "łączę..."; setTimeout(function() { let callingText = document.querySelector(".connectText"); callingText = callingText.innerText = "Trwa połączenie..."; // do zrobienia odliczanie }, 4000); } else { let callDisplay = document.querySelector(".numberCalling"); callDisplay.innerText = "Zły numer"; } }; callText(); };Corro con un pequeño problema al escribir un proyecto personal. Es un simulador de teléfono pequeño y en este momento me enfrenta a un problema de "alcance global". Como puede ver en el código provisto, tengo 4 variables en global, pero solo dos ( numFlag y callFlag ) funcionan sin ningún problema. Cuando se trata de las variables CallDisplay y CallText , tengo que llamarlas cada vez que se necesitan, al igual que la función no tendría acceso a sus versiones globales. Intenté eliminar las versiones de alcance local y esperaba que funcionara en global, pero no lo hará. Sé que puedo dejarlo así por ahora (funciona como debería) pero las variables adicionales solo hacen que el código sea más difícil de leer y mantener... y me está volviendo loco, por qué no funciona. Así que por favor, ilumíname :)
Esto sucede debido a las siguientes líneas
callDisplay = callDisplay.innerText += display.innerText; callingText = callingText.innerText = "łączę..."; callingText = callingText.innerText = "Trwa połączenie..."; Están sobrescribiendo las variables callDisplay y callingText .
Usar
callDisplay.innerText += display.innerText; callingText.innerText = "łączę..."; callingText.innerText = "Trwa połączenie...";en su lugar y funcionará como quieras
let numFlag = document.getElementById("numBTN-Flag"); let callFlag = document.getElementById("callScreen"); let callDisplay = document.querySelector(".numberCalling"); let callingText = document.querySelector(".connectText"); function callCancel() { callFlag.style.display = "none"; numFlag.style.display = "block"; callDisplay.innerText = ""; display.innerText = ""; } const answerNumber = () => { numFlag.style.display = "none"; callFlag.style.display = "block"; callDisplay.innerText += display.innerText; const callText = () => { if (callDisplay.innerText.length >= 9) { callingText.innerText = "łączę..."; setTimeout(function() { callingText.innerText = "Trwa połączenie..."; // do zrobienia odliczanie }, 4000); } else { callDisplay.innerText = "Zły numer"; } }; callText(); };