如何用原生JavaScript通过表单向常量USERS数组添加数据并展示?
如何用原生JavaScript将表单数据添加到数组并展示内容?
我来帮你搞定这个需求!你想要用原生JS把表单提交的用户数据加入USERS常量数组,同时在.show容器里展示数组内容对吧?咱们一步步来调整代码:
首先先修正你原代码里的一个小问题:USERS数组里的用户名得用字符串包裹(比如'Brit'而不是Brit),不然会被当成未定义变量报错。
接下来核心要做的几件事:
- 阻止表单默认的提交刷新行为,不然页面一刷新数组数据就没了
- 获取表单输入的姓名和年龄值,注意把年龄转成数字类型
- 把新的用户对象添加到
USERS数组里 - 写一个渲染函数,把数组内容动态展示到
.show容器中
下面是修改后的完整代码:
<!DOCTYPE html> <head> <title>Users</title> <style> /* 加一点基础样式让展示更清晰 */ .show { margin-top: 20px; padding: 12px; border: 1px solid #e0e0e0; border-radius: 4px; } .user-item { margin: 8px 0; padding: 6px; background-color: #f8f8f8; border-radius: 2px; } </style> </head> <body> <main> <form id="userForm"> <label for="name">Name:</label> <input type="text" id="name" name="name" required/> <label for="age">Age:</label> <input type="number" id="age" name="age" min="1" required/> <input type="submit" value="submit" class="submit"/> </form> <div class="show"> </div> </main> <script> // 修正字符串引号问题,初始化用户数组 const USERS = [ { name: 'Brit', age: 45 }, { name: 'John', age: 55 } ]; // 获取DOM元素 const userForm = document.getElementById('userForm'); const showContainer = document.querySelector('.show'); // 渲染用户数组到页面的函数 function renderUserList() { // 先清空容器,避免重复渲染内容 showContainer.innerHTML = ''; // 遍历数组创建每个用户的展示元素 USERS.forEach(user => { const userCard = document.createElement('div'); userCard.className = 'user-item'; userCard.textContent = `Name: ${user.name}, Age: ${user.age}`; showContainer.appendChild(userCard); }); } // 页面加载完成后先渲染初始的用户列表 renderUserList(); // 监听表单提交事件 userForm.addEventListener('submit', function(e) { // 阻止表单默认的刷新提交行为 e.preventDefault(); // 获取输入框的值,处理一下格式 const userName = document.getElementById('name').value.trim(); const userAge = parseInt(document.getElementById('age').value); // 将新用户对象添加到数组 USERS.push({ name: userName, age: userAge }); // 重新渲染用户列表 renderUserList(); // 清空表单输入框,方便下一次填写 userForm.reset(); }); </script> </body> </html>
关键代码说明:
e.preventDefault():这一步很重要,能阻止表单提交后默认的页面刷新,保证我们用JS处理的数据不会丢失。renderUserList()函数:专门负责把USERS数组的内容转换成DOM元素展示到页面,每次添加新用户后调用它就能实时更新展示内容。- 表单验证:给输入框加了
required和min属性,做简单的前端校验,避免空值或无效年龄被提交。 form.reset():提交完成后清空输入框,提升用户填写体验。
这样修改后,你提交表单时,新的用户数据就会被加入USERS数组,页面上的.show区域也会立刻更新展示所有用户信息啦!
内容的提问来源于stack exchange,提问作者TProgroam
相关产品推荐
相关产品推荐

