Bruno R
A la hora de llamar a una funcion por medio de eventos no se colocan los parentesis al final del nombre de la funcion ⇒
btn.onclick = displayMessage; //displayMessage es una funcion ove
En el caso de que la funcion tenga parametros, function displayMessag(msgText, msgType) y queramos llamarla por medio de un evento, ineludiblemente tendria que colocar los parentesis, generando el error antes mencionado 👆, para corregirlo tendria que hacer uso de las fuciones anonimas ⇒
btn.onclick = function() { displayMessage('que onda'); } // aca falta el segundo parametro pero no importa, a efectos practicos se entiende.
const btn = document.querySelector('button'); btn.onclick = function() { displayMessage('que onda' , 'chat'); }; function displayMessage(msgText, msgType) { const html = document.querySelector('html'); const panel = document.createElement('div'); panel.setAttribute('class', 'msgBox'); html.appendChild(panel); const msg = document.createElement('p'); msg.textContent = msgText; panel.appendChild(msg); const closeBtn = document.createElement('button'); closeBtn.textContent = 'x'; panel.appendChild(closeBtn); closeBtn.onclick = function() { panel.parentNode.removeChild(panel); } if (msgType === 'warning') { msg.style.backgroundImage = 'url(icons/warning.png)'; panel.style.backgroundColor = 'red'; } else if (msgType === 'chat') { msg.style.backgroundImage = 'url(icons/chat.png)'; panel.style.backgroundColor = 'aqua'; } else { msg.style.paddingLeft = '20px'; } }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Function start</title> <link rel="stylesheet" href="style.css"> </head> <body> <button>Display message box</button> <script src="script.js"></script> </body> </html>
.msgBox { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 242px; background: #eee; } .msgBox p { line-height: 1.5; padding: 10px 20px; color: #333; padding-left: 82px; background-position: 25px center; background-repeat: no-repeat; } .msgBox button { background: none; border: none; position: absolute; top: 0; right: 0; font-size: 1.1rem; color: #aaa; }
Esta funcion lo que hacer es recibir dos argumentos, para sus dos parametros, el primero genera un mensaje a reproducir en un modal (o cuadro de mensaje), y el segundo presenta cual sera el tipo de mensaje, que puede ser "warning" o "chat", con el que se cambia la apariencia de nuestro cuadro de mensaje.