薛乎乎~ 2024-11-20 13:57 采纳率: 81%
浏览 9

利用vue+html使得对数据进行修改、添加、删除、查找等

利用vue+html使得对数据进行修改、添加、删除、查找等


```html
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vue Table CRUD</title>
  <style>
    table{
      border: 1px solid blue;
      width: 500px;
      text-align:center;
    }
    td{
      border: 1px solid blue;
    }
  </style>
  <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>

<body>

  <div id="app">
    <h2>表格数据增删改查</h2>
    <input type="text" v-model="searchQuery" placeholder="输入名称进行查询">
    <table>
      <thead>
        <tr>
          <th>ID</th>
          <th>姓名</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in filteredTableData" :key="item.id">
          <td>{{ item.id }}</td>
          <td v-if="!editingItem || editingItem.id!== item.id">{{ item.name }}</td>
          <td>{{ item.sex }}</td>
          <td>{{ item.age }}</td>
          <td>{{ item.class }}</td>
          <td>{{ item.school }}</td>
          <td v-if="editingItem && editingItem.id === item.id">
            <input type="text" v-model="editingItem.name">
          </td>
          <td>
            <button v-if="!editingItem || editingItem.id!== item.id" @click="editItem(item)">编辑</button>
            <button v-if="editingItem && editingItem.id === item.id" @click="saveEdit(item.id)">保存</button>
            <button @click="deleteItem(item.id)">删除</button>
          </td>
        </tr>
      </tbody>
    </table>
    <div>
      <input type="text" v-model="newItem.name" placeholder="输入姓名">
      <button @click="addItem">添加</button>
    </div>
  </div>

  <script>
    const app = Vue.createApp({
      data() {
        return {
          tableData: [
            {id:'1',name:'tom',sex:'男',age:'19',class:'B2306',school:'xx'},
            {id:'2',name:'Amy',sex:'女',age:'17',class:'B2317',school:'xx'},
            {id:'3',name:'小红',sex:'女',age:'18',class:'B2318',school:'xx'},
            {id:'4',name:'小强',sex:'男',age:'19',class:'B2315',school:'xx'},
            {id:'5',name:'小亮',sex:'男',age:'18',class:'B2313',school:'xx'},
            {id:'6',name:'大明',sex:'女',age:'19',class:'B2315',school:'xx'},
            {id:'7',name:'玲玲',sex:'男',age:'19',class:'B2319',school:'xx'},
            {id:'8',name:'小芳',sex:'女',age:'17',class:'B2311',school:'xx'},
            {id:'9',name:'sam',sex:'男',age:'19',class:'B2313',school:'xx'},
            {id:'10',name:'jack',sex:'男',age:'19',class:'B2306',school:'xx'},],
          newItem: { id: null, name: '' },
          editingItem: null,
          searchQuery: ''
        };
      },
      computed: {
        filteredTableData() {
          return this.tableData.filter(item => item.name.includes(this.searchQuery));
        }
      },
      methods: {
        addItem() {
          if (this.newItem.name.trim()!== '') {
            const newId = this.tableData.length > 0? this.tableData[this.tableData.length - 1].id + 1 : 1;
            this.tableData.push({ id: newId, name: this.newItem.name });
            this.newItem.name = '';
          }
        },
        deleteItem(id) {
          this.tableData = this.tableData.filter(item => item.id!== id);
        },
        editItem(item) {
          this.editingItem = {...item };
        },
        saveEdit(id) {
          if (this.editingItem) {
            const index = this.tableData.findIndex(item => item.id === id);
            if (index!== -1) {
              this.tableData[index].name = this.editingItem.name;
              this.editingItem = null;
            }
          }
        }
      }
    });

    app.mount('#app');
  </script>

</body>

</html>


```

  • 写回答

1条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2024-11-20 14:01
    关注

    该回答参考ChatGPT,由吾为汝整理提供如若有用,还请题主采纳!

    这是一个使用 Vue.js 和 HTML 实现的简单增删改查(CRUD)示例。这个示例展示了如何对表格中的数据进行添加、删除、编辑和查找。以下是代码的详细说明和一些改进建议。

    代码说明

    1. HTML 结构:

      • 使用 <input> 输入框来进行数据的查询和添加。
      • 使用 <table> 来展示数据,表格中包含 ID、姓名和操作按钮。
    2. Vue.js 逻辑:

      • data() 方法定义了组件的状态,包括表格数据、搜索查询、新增项和正在编辑的项。
      • computed 属性 filteredTableData 用于根据搜索查询过滤表格数据。
      • methods 中定义了添加、删除、编辑和保存编辑的方法。

    改进建议

    1. 完整数据结构:

      • addItem 方法中,除了姓名外,可以考虑添加性别、年龄、班级和学校等其他字段。
    2. 输入验证:

      • 在添加和编辑数据时,可以增加输入验证,确保用户输入有效数据。
    3. 样式美化:

      • 可以使用 CSS 框架(如 Bootstrap)来美化表格和按钮,使其更具吸引力。
    4. ID 生成:

      • 当前 ID 的生成方式可能会导致重复,可以考虑使用更可靠的方式生成唯一 ID,例如使用时间戳或 UUID。
    5. 数据持久化:

      • 可以考虑将数据存储在本地存储中,以便在页面刷新后仍然保留数据。

    完整代码示例

    以下是改进后的完整代码示例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Vue Table CRUD</title>
      <style>
        table {
          border: 1px solid blue;
          width: 500px;
          text-align: center;
        }
        td {
          border: 1px solid blue;
        }
      </style>
      <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    </head>
    <body>
      <div id="app">
        <h2>表格数据增删改查</h2>
        <input type="text" v-model="searchQuery" placeholder="输入姓名进行查询">
        <table>
          <thead>
            <tr>
              <th>ID</th>
              <th>姓名</th>
              <th>性别</th>
              <th>年龄</th>
              <th>班级</th>
              <th>学校</th>
              <th>操作</th>
            </tr>
          </thead>
          <tbody>
            <tr v-for="item in filteredTableData" :key="item.id">
              <td>{{ item.id }}</td>
              <td v-if="!editingItem || editingItem.id !== item.id">{{ item.name }}</td>
              <td v-if="!editingItem || editingItem.id !== item.id">{{ item.sex }}</td>
              <td v-if="!editingItem || editingItem.id !== item.id">{{ item.age }}</td>
              <td v-if="!editingItem || editingItem.id !== item.id">{{ item.class }}</td>
              <td v-if="!editingItem || editingItem.id !== item.id">{{ item.school }}</td>
              <td v-if="editingItem && editingItem.id === item.id">
                <input type="text" v-model="editingItem.name">
                <input type="text" v-model="editingItem.sex">
                <input type="text" v-model="editingItem.age">
                <input type="text" v-model="editingItem.class">
                <input type="text" v-model="editingItem.school">
              </td>
              <td>
                <button v-if="!editingItem || editingItem.id !== item.id" @click="editItem(item)">编辑</button>
                <button v-if="editingItem && editingItem.id === item.id" @click="saveEdit(item.id)">保存</button>
                <button @click="deleteItem(item.id)">删除</button>
              </td>
            </tr>
          </tbody>
        </table>
        <div>
          <input type="text" v-model="newItem.name" placeholder="输入姓名">
          <input type="text" v-model="newItem.sex" placeholder="输入性别">
          <input type="text" v-model="newItem.age" placeholder="输入年龄">
          <input type="text" v-model="newItem.class" placeholder="输入班级">
          <input type="text" v-model="newItem.school" placeholder="输入学校">
          <button @click="addItem">添加</button>
        </div>
      </div>
    
      <script>
        const app = Vue.createApp({
          data() {
            return {
              tableData: [
                { id: '1', name: 'tom', sex: '男', age: '19', class: 'B2306', school: 'xx' },
                { id: '2', name: 'Amy', sex: '女', age: '17', class: 'B2317', school: 'xx' },
                // 其他数据...
              ],
              newItem: { id: null, name: '', sex: '', age: '', class: '', school: '' },
              editingItem: null,
              searchQuery: ''
            };
          },
          computed: {
            filteredTableData() {
              return this.tableData.filter(item => item.name.includes(this.searchQuery));
            }
          },
          methods: {
            addItem() {
              if (this.newItem.name.trim() !== '') {
                const newId = this.tableData.length > 0 ? (parseInt(this.tableData[this.tableData.length - 1].id) + 1).toString() : '1';
                this.tableData.push({ id: newId, ...this.newItem });
                this.newItem = { id: null, name: '', sex: '', age: '', class: '', school: '' };
              }
            },
            deleteItem(id) {
              this.tableData = this.tableData.filter(item => item.id !== id);
            },
            editItem(item) {
              this.editingItem = { ...item };
            },
            saveEdit(id) {
              if (this.editingItem) {
                const index = this.tableData.findIndex(item => item.id === id);
                if (index !== -1) {
                  this.tableData[index] = { ...this.editingItem };
                  this.editingItem = null;
                }
              }
            }
          }
        });
    
        app.mount('#app');
      </script>
    </body>
    </html>
    

    总结

    这个示例展示了如何使用 Vue.js 创建一个简单的 CRUD 应用。通过进一步的改进和扩展,可以将其发展为一个功能更强大的应用。希望这个示例对你有所帮助!如果有其他问题或需要进一步的功能实现,请随时告诉我。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月20日