搜索

首页  >  问答  >  正文

javascript - <div contentEditable="true" onclick=""></div>实现placeholder效果?

<p contenteditable="true" id="comment" onclick="handleComment()">Leave a comment</p>
function handleComment() {
    var e = document.getElementById("comment");
    e.innerHTML = "";
    e.removeEventListener('click', handleComment, false);
}

问题描述
我这样实现的话,当鼠标聚焦到p标签的时候,确实能将innerHTML清空,但是removeEventListener却无法产生效果。也就是说每次重新聚焦到p标签时候,上次的输入都会清除。

我的目的只是想让第一次聚焦到p标签的时候清空标签内的内容。

请问这是什么原因呢?

阿神阿神2831 天前794

全部回复(3)我来回复

  • 大家讲道理

    大家讲道理2017-04-11 13:24:42

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    <style>
    .con{
        width:300px;
        height:100px;
        border:1px solid gray;
    }
    .con:empty:before{
        content:attr(placeholder);
        font-size: 16px;
        color: #999;
    }
    .con:focus:before{
        content:none;
    }
    </style>
    </head>
    <body>
    <p class="con" contenteditable="true" placeholder="Leave a comment"></p>
    <script>
    </script>
    </body>
    </html>

    回复
    0
  • 阿神

    阿神2017-04-11 13:24:42

    你一个是元素上的onclick事件,一个是js动态绑定事件,不能混用啊!

    回复
    0
  • 迷茫

    迷茫2017-04-11 13:24:42

    function handleComment() {
        var e = document.getElementById("comment");
        e.innerHTML = "";
        e.onclick = undefined;
      //e.removeEventListener('click', handleComment, false);
    }

    因为removeEventListener只能remove,用addEventListener加上去的事件,直接定义在属性onclick上的handler是无效的。

    回复
    0
  • 取消回复