美文网首页
可编辑内容框

可编辑内容框

作者: 心存美好 | 来源:发表于2022-03-17 09:16 被阅读0次

可编辑内容框普通写法

<!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>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            font-family: Microsoft yahei, serif;

        }

        li {
            list-style: none;
        }

        #box ul li {
            height: 50px;
            padding-left: 50px;
            line-height: 50px;
            font-size: 12px;
            border-bottom: 1px solid red;
        }

        #box ul li span {
            float: left;
        }

        #box ul li input {
            display: none;
            float: left;
            margin-top: 14px;
            color: #999;
        }

        #box ul li p {
            float: left;
            width: 50px;
            height: 25px;
            line-height: 25px;
            text-align: center;
            margin-top: 12px;
            margin-left: 10px;
            background-color: #000;
            border-radius: 4px;
            color: #fff;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <div id="box">
        <ul>
            <li>
                <span>点击修改</span>
                <input type="text" value="input1点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input2点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input3点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input4点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input5点击修改">
                <p>修改</p>
            </li>
        </ul>
    </div>
    <script>
        //获取元素
        let oBox = document.getElementById('box')//先获取box提高性能,后面的获取可以使用oBox往内就可以
        let aP = [...oBox.querySelectorAll('ul li p')]//变成数组,forEach操作数组就不用for循环和定义len了
        let aSpan = oBox.querySelectorAll('ul li span')
        let aInput = oBox.querySelectorAll('ul li input')
        console.log(oBox, aP, aSpan, aInput);
        //批量绑定事件
        aP.forEach((oP, index) => {
            oP.onclick = function () {
                //一个按钮做两件事情,要摸修改要么确定
                if (this.innerHTML === '修改') {

                    aInput[index].value = aSpan[index].innerHTML//对应的span获取值给input的value
                    //span隐藏input显示
                    aSpan[index].style.display = 'none';
                    aInput[index].style.display = 'block';
                    this.innerHTML = '确认'
                } else {
                    aSpan[index].innerHTML = aInput[index].value
                    aSpan[index].style.display = 'block';
                    aInput[index].style.display = 'none';
                    this.innerHTML = '修改'
                }
            }
        })

    </script>

</body>

</html>

可编辑内容框优化写法

<!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>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            font-family: Microsoft yahei, serif;

        }

        li {
            list-style: none;
        }

        #box ul li {
            height: 50px;
            padding-left: 50px;
            line-height: 50px;
            font-size: 12px;
            border-bottom: 1px solid red;
        }

        #box ul li span {
            float: left;
        }

        #box ul li input {
            display: none;
            float: left;
            margin-top: 14px;
            color: #999;
        }

        #box ul li p {
            float: left;
            width: 50px;
            height: 25px;
            line-height: 25px;
            text-align: center;
            margin-top: 12px;
            margin-left: 10px;
            background-color: #000;
            border-radius: 4px;
            color: #fff;
            cursor: pointer;
        }
    </style>
</head>

<body>
    <div id="box">
        <ul>
            <li>
                <span>点击修改</span>
                <input type="text" value="input1点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input2点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input3点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input4点击修改">
                <p>修改</p>
            </li>
            <li>
                <span>点击修改</span><input type="text" value="input5点击修改">
                <p>修改</p>
            </li>
        </ul>
    </div>
    <script>

        //获取元素
        let oBox = document.getElementById('box')
        let aP = [...oBox.querySelectorAll('ul li p')]
        let aSpan = oBox.querySelectorAll('ul li span')
        let aInput = oBox.querySelectorAll('ul li input')
        console.log(oBox, aP, aSpan, aInput);
        //span始终不变,变的是input,通过信号量,信号量(变量)跟页面上显示的‘点击修改’一致
        let str = '点击修改'
        //批量绑定事件
        aP.forEach((oP, index) => {
            oP.onclick = function () {
                if (this.innerHTML === '修改') {

                    aInput[index].value = str;

                    aSpan[index].style.display = 'none';
                    aInput[index].style.display = 'block';
                    this.innerHTML = '确认'
                } else {
                    aSpan[index].innerHTML = Input[index].value
                    aSpan[index].style.display = 'block';
                    aInput[index].style.display = 'none';
                    this.innerHTML = '修改'
                }
            }
        })

    </script>

</body>

</html>

相关文章

网友评论

      本文标题:可编辑内容框

      本文链接:https://www.haomeiwen.com/subject/ulqvdrtx.html