vue实现自定义表格的行列以及点击显示对钩

先看效果图

上代码:

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>table</title>
</head>
<style>
    #lineTd {
        background: #fff url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiPjxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjEwMCUiIHkyPSIxMDAlIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjEiLz48L3N2Zz4=) no-repeat 100% center;
    }
    
    table.gridtable {
        font-family: verdana, arial, sans-serif;
        font-size: 11px;
        color: #333333;
        border-width: 1px;
        border-color: #666666;
        border-collapse: collapse;
    }
    
    table.gridtable th {
        width: 30px;
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #dedede;
    }
    
    table.gridtable td {
        border-width: 1px;
        padding: 8px;
        border-style: solid;
        border-color: #666666;
        background-color: #ffffff;
        text-align: center;
    }
    
    ul {
        width: 20%;
    }
    
    ul li {
        position: relative;
    }
    
    ul li button {
        position: absolute;
        right: 0;
    }
</style>

<body>
    <div id='app'>
        <div class="hello">
            自定义表格
            <ul>
                字典一的数据:
                <br/>
                <input type="text" v-model='value1'>
                <button @click='addValue1'> 添加</button>
                <li v-for="(item,index) in dic1" :key="index">
                    {{ item }}
                    <button @click='deleterow1(item)'>删除</button>
                </li>
            </ul>
            <ul>
                字典二的数据:
                <br/>
                <input type="text" v-model='value2'>
                <button @click='addValue2'> 添加</button>
                <li v-for="(item,index) in dic2" :key="index">
                    {{ item }}
                    <button @click='deleterow2(item)'>删除</button>
                </li>
            </ul>
            <table class="gridtable">
                <tr>
                    <td id="lineTd">
                        <span style="float: left; margin-top: 20px">字典2</span>
                        <span style="float: right; margin-top: -10px">字典1</span>
                    </td>
                    <th v-for="(item,index) in dic1" :key="index">{{ item}}</th>
                </tr>
                <tr v-for="item in dic2" :key="item">
                    <td>
                        {{ item }}
                    </td>
                    <td v-for="(y,index) in dic1" :key="index" @click="rowclick(item, y)" :id=`${item+y}`>
                        <!-- <span v-show="isActive === item+y">✔️</span> -->
                    </td>
                </tr>
            </table>
            <button>确定</button>
        </div>
    </div>
</body>
<script src="./js/vue.js"></script>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            dic1: [1, 2, 3, 4, 5, 6],
            dic2: ["a", "b", "c", "d"],
            isActive: "-1",
            value1: '',
            value2: ''
        },
        methods: {
            rowclick(x, y) {
                // this.isActive = x + y;
                if (document.getElementById(`${x+y}`).innerHTML == '✔️') {
                    document.getElementById(`${x+y}`).innerHTML = '';
                    return
                }
                document.getElementById(`${x+y}`).innerHTML = '✔️';
            },
            addValue1() {
                if (!this.value1) {
                    alert('数据不可为空');
                    return
                }
                for (let i in this.dic1) {
                    if (this.dic1[i] == this.value1) {
                        alert('不许重复添加数据');
                        return
                    }
                }
                this.dic1.push(this.value1);
            },
            addValue2() {
                if (!this.value2) {
                    alert('数据不可为空');
                    return
                }
                for (let i in this.dic2) {
                    if (this.dic2[i] == this.value2) {
                        alert('不许重复添加数据');
                        return
                    }
                }
                this.dic2.push(this.value2);
            },
            deleterow1(id) {
                for (let i in this.dic1) {
                    if (this.dic1[i] == id) {
                        this.dic1.splice(i, 1)
                    }
                }
            },
            deleterow2(id) {
                for (let i in this.dic2) {
                    if (this.dic2[i] == id) {
                        this.dic2.splice(i, 1)
                    }
                }
            }
        },

    })
</script>

</html>
原文地址:https://www.cnblogs.com/houBlogs/p/15211463.html