// Asignación de los eventos document.getElementById("suma").addEventListener("click", sumar); document.getElementById("resta").addEventListener("click", restar); document.getElementById("multiplicacion").addEventListener("click", multiplicar); document.getElementById("division").addEventListener("click", dividir); // Funciones que implementan la lógica function sumar() { // Obtengo los valores let numero1 = document.getElementById("numero1"); let numero2 = document.getElementById("numero2"); // Los sumo let suma = Number(numero1.value) + Number(numero2.value); // Muestro el valor let resultado = document.getElementById("resultado"); resultado.value = suma; } function restar () { // Obtengo los valores let numero1 = document.getElementById("numero1"); let numero2 = document.getElementById("numero2"); // Los sumo let suma = Number(numero1.value) - Number(numero2.value); // Muestro el valor let resultado = document.getElementById("resultado"); resultado.value = suma; } function multiplicar () { // Obtengo los valores let numero1 = document.getElementById("numero1"); let numero2 = document.getElementById("numero2"); // Los sumo let suma = Number(numero1.value) * Number(numero2.value); // Muestro el valor let resultado = document.getElementById("resultado"); resultado.value = suma; } function dividir() { // Obtengo los valores let numero1 = document.getElementById("numero1"); let numero2 = document.getElementById("numero2"); // Los sumo let suma = Number(numero1.value) / Number(numero2.value); // Muestro el valor let resultado = document.getElementById("resultado"); resultado.value = suma; }
Calculadora solución 1
<h1>Calculadora</h1> <input type="number" id="numero1"> <button id="suma">+</button> <button id="resta">-</button> <button id="multiplicacion">*</button> <button id="division">/</button> <input type="number" id="numero2"> = <input type="number" id="resultado"> <script src="js/script.js"></script>
// Vamos a hacer la suma // 1.- Establecer el algoritmo (la receta) // 2.- Comprobar el programa // 3.- Refactorizar (mejorar) // Cuando pulsen la suma se suman los dos numeros y se muestran en el resultado // a) Saber como hacer que cuando pulsen un botón mi programa haga algo // Añadiendo un evento al botón // b) Saber coger el valor de una caja de texto // Obtener el elemento y con 'value' // c) Saber sumar dos números // con + // d) Saber cambiar el valor de una caja de texto // obtener el elemento y usar el value // Al pulsar el botón obtener los dos valores, sumarlos y ponerlos en la caja de resultado let suma=document.getElementById("suma"); suma.onclick=function(){ // Obtengo los valores let numero1=document.getElementById("numero1"); let numero2=document.getElementById("numero2"); // Los sumo let suma=Number(numero1.value)+Number(numero2.value); // Muestro el valor let resultado=document.getElementById("resultado"); resultado.value=suma; } let resta=document.getElementById("resta"); resta.onclick=function(){ // Obtengo los valores let numero1=document.getElementById("numero1"); let numero2=document.getElementById("numero2"); // Los sumo let suma=Number(numero1.value)-Number(numero2.value); // Muestro el valor let resultado=document.getElementById("resultado"); resultado.value=suma; } let multiplicacion=document.getElementById("multiplicacion"); multiplicacion.onclick=function(){ // Obtengo los valores let numero1=document.getElementById("numero1"); let numero2=document.getElementById("numero2"); // Los sumo let suma=Number(numero1.value)*Number(numero2.value); // Muestro el valor let resultado=document.getElementById("resultado"); resultado.value=suma; } let division=document.getElementById("division"); division.onclick=function(){ // Obtengo los valores let numero1=document.getElementById("numero1"); let numero2=document.getElementById("numero2"); // Los sumo let suma=Number(numero1.value)/Number(numero2.value); // Muestro el valor let resultado=document.getElementById("resultado"); resultado.value=suma; }
Teclado
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input id="nombre" name="nombre"> <script src="js/teclado.js"></script> </body> </html>
let caja = document.getElementById("nombre"); // Se activa al pulsar la tecla caja.onkeydown = function (evt) { console.log(evt); // No permite la pulsación de la letra 'A' if (evt.key == "a") { return false; // Cancela el evento, o sea que se carga la pulsación de la tecla } } // Al levantar la tecla caja.onkeyup = function (evt) { console.log(evt); } // Cuando el elemento tiene el foco caja.onfocus=function(evt){ console.log("Cogemos el foco"); this.style.backgroundColor="Yellow"; } // Cuando el elemento pierde el foco caja.onblur=function(evt){ console.log("Perdemos el foco"); this.style.backgroundColor="White"; } // Cuando cambia el valor y salimos del elemento caja.onchange=function(evt){ console.log(evt); } // Cuando cambia el valor sin salir del elemento caja.oninput=function(evt){ console.log(evt); }
Ejemplos eventos
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="css/styles.css"> </head> <body> <div id="test"></div> <script src="js/mouse.js"></script> </body> </html>
#test{ height: 200px; width: 200px; background-color: chartreuse; }
let caja=document.getElementById("test"); caja.onclick=function(evt){ console.log("Has pinchado"); }
Eventos intro
<button id="pinchar">Pínchame</button> <button id="otro">Pínchame también</button> <button id="otromas">Pínchame de nuevo</button>
// Eventos. Primero capturo el elemento let boton=document.getElementById("pinchar"); let otro=document.getElementById("otro"); let otromas=document.getElementById("otromas"); // Asigno a sus eventos la función que quiero usar // Una función que ya existe boton.onclick=saludar; function saludar(){ alert("Hola"); } // Una función definida en el momento otro.onclick=function(){ alert("Hola que tal"); } // Una función flecha otromas.onclick=()=>{ alert("con función flecha") }
Ejemplo JS
<p>Esto es una prueba</p> <input type="text" size="20" value="Hola" id="nombre" name="nombre"/> <p id="resultado"></p> <script src="js/prueba.js"></script>
let tabla = ""; // Creo una cadena con la tabla de multiplicar for (let i = 1; i <= 10; i++) { tabla += i + " x 5 = " + (i * 5) + "<br/>" } // Cambio el párrafo para que tenga esa cadena document.getElementById("resultado").innerHTML = tabla;
Maneras de seleccionar elementos del DOM en JS
// La instrucción más usada para obtener un elemento determinado del DOM let caja=document.getElementById("nombre"); caja.style.background="red"; console.log(caja.placeholder); // Queryselector nos busca el primer elemento que coincide con el selector css // Busco por etiqueta (tag) textarea let texto=document.querySelector("textarea"); console.log(texto.innerHTML); // Busco por id let caja2=document.querySelector("#apellido"); console.log(caja2); // Buscando por clase let caja3=document.querySelector(".prueba"); console.log(caja3); caja3.value="Pepe"; // Todos los elementos que cumplen el selector css // Devuelve un array que podemos recorrer let textos=document.querySelectorAll("textarea"); console.log(textos); // Obtengo todos elementos que tienen una etiqueta (tag) determinado let cajas=document.getElementsByTagName("input"); console.log(cajas); // Obtengo todos los elementos que son de una determinada clase let porClase=document.getElementsByClassName("prueba"); console.log(porClase);
Ejemplo HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form method="get" action="#"> <label for="nombre">Introduce el nombre</label> <input type="text" id="nombre" maxlength="5" size="10" name="nombre" placeholder="Introduce tu nombre" /> <label for="apellido">Introduce el apellido</label> <input type="text" size="30" id="apellido" name="apellido" value="Apellido" /> <br /> <fieldset> <legend>Datos del curso</legend> <label for="curso">Escoge un curso</label> <input type="radio" id="JS" name="curso" value="JS" checked> <label for="JS">JS</label> <input type="radio" id="Java" name="curso" value="Java"> <label for="Java">Java</label> <input type="radio" id="CSharp" name="curso" value="C#"> <label for="CSharp">C#</label> <br /> <input type="checkbox" id="beca" name="beca" value="beca"> <label for="beca">¿Tienes beca?</label> </fieldset> <input type="color" name="password"> <select id="aula" name="aula"> <optgroup label="Edificio 1"></optgroup> <option value="1">Aula 1</option> <option value="2">Aula 2</option> <option value="3">Aula 3</option> <optgroup label="Claustro"></optgroup> <option value="4">Sala de actos</option> </select> <input list="profesores" name="profesor" class="prueba"> <textarea name="contacto" id="contacto" cols="30" rows="10">contenidp</textarea> <textarea id="mensaje" name="mensaje" rows="10" placeholder="Mensaje"></textarea> <input type="button" value="Botón"> <input list="profesores" name="profesor_auxiliar"> <button>B<b>oo</b>otón</button> <datalist id="profesores"> <option value="Ana Pi"></option> <option value="Eva Buj"></option> <option value="Luis Pérez"></option> </datalist> </form> <script src="js/script.js"></script> </body> </html>
Soluciones Jaume
function factorial(num = 1) { if (isNaN(num) !== false || num < 0) { return false; } if (num === 0) { return 1; } let res = 1; for (let i = 1; i <= num; i++) { res *= i; } return res; } function repeat(string = null, num = 0) { if (isNaN(num) !== false || num < 1) { return false; } if (typeof string !== 'string') { return false; } let res = ''; for (i = 0; i < num; i++) { res += string; } return res; } function perimetro(a = 0, b = 0) { if ((typeof a !== 'number' || typeof b !== 'number') && (a < 1 || b < 1)) { return false; } return (a + b) * 2; } function half(a = 0, b = 0, c = 0) { if (typeof a !== 'number' || typeof b !== 'number' || typeof c !== 'number') { return false; } if ((a === b) || (a === c)) { return a; } else if (b === c) { return b; } if (a < b && c > b) { return `\n\topc1 a: ${a} b: ${b} c: ${c} MITJ: ${a}`; } else if (c < b && b < a) { return `\n\topc2 a: ${a} b: ${b} c: ${c} MITJ: ${c}`; } else if ((a < b && b > c) && c > a) { return `\n\topc3 a: ${a} b: ${b} c: ${c} MITJ: ${a}`; } else if (a < b && b > c) { return `\n\topc4 a: ${a} b: ${b} c: ${c} MITJ: ${c}`; } else if ((a > b && b < c) && c < a) { return `\n\topc5 a: ${a} b: ${b} c: ${c} MITJ: ${b}`; } else if ((a > b && b < c) && c > a) { return `\n\topc6 a: ${a} b: ${b} c: ${c} MITJ: ${b}`; } else { return `cas no contemplat de a: ${a} b: ${b} c: ${c}`; } } function evenOdd(numA = 0, numB = 0) { if (typeof numA !== 'number' || typeof numB !== 'number') { return false; } if ((0 === numA % 2 && 0 === numB % 2) || (0 !== numA % 2 && 0 !== numB % 2)) { return true; } return false; } function sum(a = 0, b = 0) { let sum = 0; if ( a == b) { return a; } if ( a > b) { sum = a; a = b; b = sum; sum = 0; } for (let i = a - 1; i < b; i ++) { sum += (i + 1); } return sum; } console.log(`\nEscribir una función factorial a la que le pasamos un número y nos devuelve el factorial de ese número (el factorial de 5 es 1*2*3*4*5, el de 3 1*2*3)`); console.log(`Factorial: ${factorial(5)}`); console.log('-'.repeat(10)); console.log(`\nEscribir una función repetirCadena a la que le pasamos una cadena y un número y nos devuelve la cadena repetida n veces: repetirCadena("hola",3) ->"holaholahola"`); console.log(`Fase repetida: ${repeat('jaume', 3)}`); console.log('-'.repeat(10)); console.log(`\nCrear una función perímetro a la que le pasamos dos lados y nos devuelve el perímetro de un rectángulo con esos dos lados (la suma de los lados multiplicado por 2)`); console.log(`Perimetre: ${perimetro(5, 2)}`); console.log('-'.repeat(10)); console.log(`\nCrear una función a la que pasemos tres números y nos devuelva el que está en la mitad (ni el más alto ni el más bajo). Si hay algún número que sea igual a otro que nos devuelva ese número.`); console.log(`Dels 3 números el que esta a la meitat ni el més gran ni el més petit. Es: ${half(6, 7, 10)}`); // 6 -> Fet 1 console.log(`Dels 3 números el que esta a la meitat ni el més gran ni el més petit. Es: ${half(10, 7, 6)}`); // 6 -> Fet 2 console.log(`Dels 3 números el que esta a la meitat ni el més gran ni el més petit. Es: ${half(6, 10, 7)}`); // 6 -> Fet 3 console.log(`Dels 3 números el que esta a la meitat ni el més gran ni el més petit. Es: ${half(7, 10, 6)}`); // 6 -> Fet 4 console.log(`Dels 3 números el que esta a la meitat ni el més gran ni el més petit. Es: ${half(10, 6, 7)}`); // 6 -> Fet 5 console.log(`Dels 3 números el que esta a la meitat ni el més gran ni el més petit. Es: ${half(7, 6, 10)}`); // 6 -> Fet 6 console.log(`\nCrear una función a la que le pasemos dos números y nos devuelva true si los dos son pares o impares y false si uno es par y el otro es impar`); console.log(`Els 2 números son parells o imparells: ${evenOdd(0, 2)}`); console.log(`Els 2 números son parells o imparells: ${evenOdd(1, 3)}`); console.log(`Els 2 números son parells o imparells: ${evenOdd(2, 3)}`); console.log('-'.repeat(10)); console.log(`\nUna función sumaEntre a la que le pasamos dos números y nos suma los números desde el primero hasta el último ambos incluídos. Ej: sumaEntre(4,8)->30 (4+5+6+7+8)`); console.log(`Suma a partir de un número fins a un altre incloent el d'inici i final: ${sum(4, 8)}`); console.log(`Suma a partir de un número fins a un altre incloent el d'inici i final: ${sum(8, 4)}`); console.log(`Suma a partir de un número fins a un altre incloent el d'inici i final: ${sum(8, 8)}`); console.log(`Suma a partir de un número fins a un altre incloent el d'inici i final: ${sum(-3, 6)}`);
Ejercicio ejemplo funciones
// Vamos a hacer una función a la que le pasamos 3 números y nos devuelve el mayor de los 3 // Nombre: mayor // Parámetros: 3 números // Retorno: 1 número (el mayor) function mayor1(a,b,c){ if (a>=b && a>=c){ return a; } if (b>=a && b>=c){ return b; } return c; } function mayor(a,b,c){ if (a==undefined) return null; if (b>a) a=b; if (c>a) a=c; return a; } // Casos de prueba console.log(mayor(1,2,3)); // 3 console.log(mayor(11,2,3)); // 11 console.log(mayor(1,22,3)); // 22 console.log(mayor(1,1,3)); // 3 console.log(mayor(10,10,3)); // 10 console.log(mayor(10,10,10)); // 10 console.log(mayor(10,1)); // 10 console.log(mayor()); // null