Javascript 单击即可切换内容可编辑

Javascript 单击即可切换内容可编辑,javascript,html,contenteditable,Javascript,Html,Contenteditable,我试图在单击div contentEditable时将其设置为可编辑,然后在mouseout中将contentEditable设置为false,但到目前为止我还没有成功。单击某个链接会显示为高亮显示该链接,但在其他情况下不会执行任何操作: 令人惊讶的是,我如何解决这个问题? 我希望在单击链接时,该链接会将我带到链接页面,但相反,它在单击时会突出显示,而不会执行其他操作。如何解决此问题?永远不要使用内联html脚本声明,这是一种糟糕的做法。我认为您的链接没有做任何事情的原因是,当您为div设

我试图在单击div contentEditable时将其设置为可编辑,然后在mouseout中将contentEditable设置为false,但到目前为止我还没有成功。单击某个链接会显示为高亮显示该链接,但在其他情况下不会执行任何操作:


令人惊讶的是,我如何解决这个问题?

我希望在单击链接时,该链接会将我带到链接页面,但相反,它在单击时会突出显示,而不会执行其他操作。如何解决此问题?

永远不要使用内联html脚本声明,这是一种糟糕的做法。我认为您的链接没有做任何事情的原因是,当您为div设置默认onclick事件时,事件侦听器在其上冒泡/传播,并更改了其默认onclick事件

我建议你这样做

        window.onload = function() {
            var div = document.getElementById('editable');
            div.onclick = function(e) {
                this.contentEditable = true;
                this.focus();
                this.style.backgroundColor = '#E0E0E0';
                this.style.border = '1px dotted black';
            }

            div.onmouseout = function() {
                this.style.backgroundColor = '#ffffff';
                this.style.border = '';
                this.contentEditable = false;
            }
        }

        // And for HTML

        <div id="content">
            <span id='editable'>Surprisingly,</span>
            <a href="http://google.com">clicking this link does nothing at all.</a>
        </div>
window.onload=function(){
var div=document.getElementById(“可编辑”);
div.onclick=函数(e){
this.contentEditable=true;
这是focus();
this.style.backgroundColor='#e0';
this.style.border='1px点黑色';
}
div.onmouseout=函数(){
this.style.backgroundColor='#ffffff';
this.style.border='';
this.contentEditable=false;
}
}
//和HTML
惊人地

尝试将目标设置为
空白

<div id="content" contentEditable="true" onclick = "this.contentEditable = true;" onmouseout = "this.contentEditable = false;">
    Surprisingly, <a href="http://google.com" target = "blank">clicking this link does nothing at all.</a> How can I fix this problem?
</div>

令人惊讶的是,我如何解决这个问题?

在这里,我们可以使用此代码使html元素可编辑为true和false

    $( "#mylabel" ).click(function() {
// we get current value of html element
        var value = $('#editablediv').attr('contenteditable');
//if its false then it make editable true
    if (value == 'false') {
        $('#editablediv').attr('contenteditable','true');
    }
    else {
//if its true then it make editable false
        $('#editablediv').attr('contenteditable','false');
    }
    });

你怎么知道内联脚本声明被认为是一种不好的做法?你测试过这个脚本吗?我试着运行它,但还是遇到了和以前一样的问题:把javascript和HTML混合在一起是不好的,当你可以用更好的方式来做的时候,我想你可以用它来做一些简单的操作,但最终你会发现这对你来说是不够的。如果你用谷歌搜索这个问题,你会发现很多关于它的文章。是的,我在发布之前试过脚本。在JSFIDLE测试中,它对我也不起作用。我不知道为什么。尝试在JSFIDLE之外测试它。只需将其放入html文件并在浏览器中运行即可。对我来说效果很好。是否使用事件处理程序属性的问题与手头的问题完全不同。我测试了发布在这里的解决方案,但它仍然不起作用:您需要将链接的目标设置为
“blank”
。事实证明,即使链接不在contentEditable div中,也无法正常工作。我想我已经找到了原因:Anderson Green是对的,因为JSFIDLE使用iFrame。这里还有一个使用类的通用解决方案:最好是绕过代码(而不是只有代码的答案),因为这会使答案更有用。谢谢你的评论,我已经添加了内容。
    $( "#mylabel" ).click(function() {
// we get current value of html element
        var value = $('#editablediv').attr('contenteditable');
//if its false then it make editable true
    if (value == 'false') {
        $('#editablediv').attr('contenteditable','true');
    }
    else {
//if its true then it make editable false
        $('#editablediv').attr('contenteditable','false');
    }
    });