更改DOM文本节点的内容

时间:2013-07-29 02:40:30

标签: javascript html dom textnode

说我有以下HTML:

<div>Some text</div>

我想在每次用户点击退格键时从文本中删除最后一个字符。有没有办法从文本节点中删除一个字符?或者我必须做obj.innerText = 'Some tex'之类的事情(即自己修剪最后一个字符并替换整个字符)。

3 个答案:

答案 0 :(得分:0)

我能想到的最好的方法是使用substring方法来处理字符串。

var s = obj.innerText

// Then On backspace event listener
s = s.substring(0, s.length - 1) // returns s without the last character in the original string.

obj.innerTezt(s) // set the inner HTML back to s

编辑:感谢Jonathan,Dennis对此答案的更正!

答案 1 :(得分:0)

var div = document.getElementById('my-div');
document.addEventListener('keydown', 
    function(e) {
        if (e.which === 8) {
            div.textContent = div.textContent.substring(0, div.textContent.length - 1);
        }
    }, false);

您可能还想支持IE8。在这种情况下,请使用document.attachEvent()和div.innerText。

答案 2 :(得分:0)

// Get the element
var el = document.queryString("...")

// Get the text contents
var text = el.firstChild
if (text.nodeType === Node.TEXT_NODE) {
   // Delete the last character
   text.deleteData(text.length - 1, 1)
}

有关deleteData

的详细信息,请参阅CharacterData DOM interface