将内容可编辑文本的innerHTML转换为普通字符串

Bas*_*asj 6 html javascript css html5 contenteditable

我使用一个内容可编辑的元素:

<span id="myinput" contenteditable="true">This is editable.</span>
Run Code Online (Sandbox Code Playgroud)

document.getElementById('myinput').innerHTML
Run Code Online (Sandbox Code Playgroud)

从Javascript读取其内容。

但是结果是:

  • "blah " => innerHTML = "blah &nbsp "

  • "bonjour\n bonsoir" => innerHTML = "bonjour<br>bonsoir"(Firefox)和innerHTML = "bonjour<div>bonsoir</div>"(Chrome)

  • 也许还有很多其他东西被翻译成HTML ...

如何转换innerHTML成普通文字?

(即在我的两个示例中:"blah ""bonjour\n bonsoir"

Evi*_*mic 5

尝试使用;

#for IE
document.getElementById('myinput').innerText

#for everyone else
document.getElementById('myinput').textContent
Run Code Online (Sandbox Code Playgroud)

在查找换行符等方面,请考虑;

el = document.getElementById('myinput');
var nodes = el.childNodes;
var text = '';

for(var i = 0; i < nodes.length; i++) {                        
    switch(nodes[i].nodeName) {
        case '#text'    : text = text + nodes[i].nodeValue;   break;
        case 'BR'       : text = text + '\n';      break;
    }
}
console.log(text);
Run Code Online (Sandbox Code Playgroud)