Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

114
Vistas
Javascript se rompe al usar valores del campo de entrada HTML

Estoy tratando de crear una cuadrícula de una entrada específica de alto/ancho. Si codifico el alto y el ancho en el lienzo de abajo (10 y 5 en este caso) funciona perfectamente

 const canvasWindow = document.getElementById("canvas-window") const height = document.getElementById("height") const width = document.getElementById("width") const generateCanvasBtn = document.getElementById("generate-canvas-btn") generateCanvasBtn.addEventListener("click", () => { const canvas = new Canvas(document.getElementById("canvas-window"), 10, 5); canvas.generateCanvas(); })

Sin embargo, este ejemplo se rompe:

 const canvasWindow = document.getElementById("canvas-window") const height = document.getElementById("height") const width = document.getElementById("width") const generateCanvasBtn = document.getElementById("generate-canvas-btn") generateCanvasBtn.addEventListener("click", () => { const canvas = new Canvas(document.getElementById("canvas-window"), height.value, width.value); canvas.generateCanvas(); })

¿Alguna idea de que puede estar causando esto? Si registro height.value y width.value, obtiene los valores correctamente, por lo que me cuesta ver en qué se diferencia de estar codificado si los valores se leen correctamente. El error que estoy recibiendo es:

canvas.js:18 TypeError no detectado: no se pueden establecer propiedades de undefined (estableciendo '0') en Canvas.generateCanvas (canvas.js:18:33) en HTMLInputElement. (pixelcreator.js:8:12)

Aquí hay un código que contiene la línea a la que hace referencia el error:

 class Canvas { grid; constructor(window, height, width) { this.window = window; this.height = height; this.width = width; } generateCanvas() { this.grid = new Array(this.height).fill(0).map(() => new Array(this.width).fill(0)); for (let i = 0; i < this.height; i++) { const row = document.createElement("div"); row.classList.add('row'); this.window.appendChild(row); for (let j = 0; j < this.width; j++) { this.grid[i][j] = new Cell(row) // this is line 18 from the error this.grid[i][j].createCell(); } } }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

height.value o width.value podría ser un tipo de cadena.

Prueba esto:

 new Canvas(document.getElementById("canvas-window"), parseInt(height.value), parseInt(width.value));
about 4 years ago · Juan Pablo Isaza Denunciar

0

Está utilizando el valor de la entrada directamente, que es una cadena. Intente analizarlo en un número entero con parseInt(...)

 const canvasWindow = document.getElementById("canvas-window") const height = document.getElementById("height") const width = document.getElementById("width") const generateCanvasBtn = document.getElementById("generate-canvas-btn") generateCanvasBtn.addEventListener("click", () => { const canvas = new Canvas(document.getElementById("canvas-window"), parseInt(height.value), parseInt(width.value)); canvas.generateCanvas(); })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda