You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现Etch-a-Sketch网格尺寸调整问题求助

Etch-a-Sketch网格尺寸调整问题提示

问题概述

已完成The Odin Project的Etch-a-Sketch项目基础功能:创建16x16网格div、点击按钮弹出输入框,但无法将用户输入值(如50)应用为新的网格尺寸(50x50)。

当前代码

JavaScript

const btn = document.querySelector("button");

btn.addEventListener("click", function () {
  var userInput = prompt(
    "Please enter the amount of grids you want to be in our Etch-a-Sketch. It needs to be between 1 and 100."
  );
  console.log(userInput);

  if (userInput > 0 && userInput < 101) {
    console.log("We are going to make a grid of " + userInput + " divs");
  } else {
    console.log(
      "You chose " +
        userInput +
        " and unfortunately that is too big. Please enter a value between 1 and 100."
    );
  }

  for (i = 0; i < userInput * userInput; i++) {
    let gridDiv = document.createElement("div");
    gridDiv.className = "gridDiv";
    document.getElementById("container").appendChild(gridDiv);
  }

  document.querySelectorAll(".gridDiv").forEach((v) => {
    v.addEventListener("mouseover", (e) => {
       e.target.style.background = "black";
    });
  });
});

CSS

body {
    display: flex;
    justify-content: center;
    align-items: center;
}

#btn {
    display: block;
}

.gridDiv {
    background-color: grey;
}

#container {
    height: 500px;
    width: 500px;
    border: 5px solid black;
    display: inline-grid;
    gap: 1px 1px;
    grid-template-columns: repeat(16, auto);
    /*grid-template-rows: repeat(auto);*/    
}

HTML

<!DOCTYPE html>
<html lang = "en">
    <head>
        <meta charset = "UTF-8"/>
        <title>The Official Odin Project Etch a Sketch</title>
        <link rel="stylesheet" href="style.css"/>
        <script src = "script.js"  defer></script>
    </head>
    <header></header>
    <body>

        <div id="btnDiv">
            <button id = "btn">Click Me</button>
        
        </div>
        
    <div id = "container">
    </div>
    
    </body>
</html>

尝试过的方法

document.getElementById('container').style.gridTemplateColumns = "uerInput , auto";

该代码无效,不确定是语法还是逻辑问题。

提示方向

  • 清理旧网格:每次生成新网格前,先清空容器内所有原有.gridDiv元素,避免新旧网格叠加导致布局混乱。
  • 修正网格属性赋值:grid-template-columns需要使用repeat()函数,正确格式应为repeat(用户输入值, 1fr)(用1fr替代auto能让网格项均匀分配容器空间),同时注意变量名拼写(你之前写的uerInput是错误的)。
  • 转换输入类型:prompt返回的是字符串,需转为数字后再进行大小判断和计算,避免非预期的比较结果。
  • 限定有效操作范围:仅当用户输入符合1-100的条件时,才执行创建新网格和修改布局的操作,避免无效输入触发错误。

内容的提问来源于stack exchange,提问作者Servik-code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:10:29