Solución cajas complejo

<!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/estilos.css">
</head>
<body>
    <p>
        <label for="numero">Introduce el ancho de cajas</label>
        <input type="number" id="ancho" value="0">
        <label for="numero">Introduce el alto de cajas</label>
        <input type="number" id="alto" value="0">
    </p>
    <div id="contenedor"></div>
    <script src="js/script.js"></script>
</body>
</html>
window.onload = function () {
    
    let ancho=document.getElementById("ancho");
    let alto=document.getElementById("alto");
    // Añado el evento input al input del número para que cuando cambie actue
    ancho.addEventListener("input", function(event){
       generarCajas();
    })
    alto.addEventListener("input", function(event){
        generarCajas();
     })
}
function generarCajas(){
    let [ancho,alto]=obtenerValores();
    borrarContenedor();
    // Crear tantas cajas de ancho y de alto como me pidan
    for(let i=1;i<=alto;i++){
        let d=document.createElement("div");
        for(let j=1;j<=ancho;j++){
            let caja=crearCaja(`(${i},${j})`);
            d.append(caja);
        }
        ponerCaja(d);
    }

}
function borrarContenedor(){
    let contenedor=document.getElementById("contenedor");
    contenedor.innerHTML="";
}
function ponerCaja(caja){
    let contenedor=document.getElementById("contenedor");
    contenedor.append(caja);
}
// Obtengo los valores de mi html
function obtenerValores(){
    let ancho=document.getElementById("ancho");
    let alto=document.getElementById("alto");
    return [Number(ancho.value),Number(alto.value)];
}
// Creo una función aparte para crear la caja
function crearCaja(numero){
    let caja=document.createElement("div");
    caja.className="caja"; //caja.classList.add("caja")
    // Utilizo las cadenas con formato para poner el número
    caja.innerHTML=`<p>${numero}</p>`;
    return caja;
}

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos