的内容说我有以下HTML:更改DOM文本节点
<div>Some text</div>
我想从文本中的每个用户点击退格键删除时的最后一个字符。有没有办法从文本节点中实际删除一个字符?或者我必须做些什么,比如obj.innerText = 'Some tex'
(即修剪最后一个字符并替换整个东西)。
的内容说我有以下HTML:更改DOM文本节点
<div>Some text</div>
我想从文本中的每个用户点击退格键删除时的最后一个字符。有没有办法从文本节点中实际删除一个字符?或者我必须做些什么,比如obj.innerText = 'Some tex'
(即修剪最后一个字符并替换整个东西)。
我能想到的最好的方法就是使用字符串的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
编辑:谢谢乔纳森,丹尼斯对这个答案的更正!
你有基本的想法,但有几个问题:1)['textContent'](https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent)是标准化的属性,将需要与'innerText'混合以获得传统支持。 2)'s'不是'obj.innerText'的*指针*;这是一个副本。设置它不会影响'obj.innerText'(或'obj.textContent')。 –
好的,赶上!你是对的乔纳森 - 我错过了最后一点,他必须得到子字符串后,再次设置innerText/innerHTML! – 2013-07-29 03:08:14
'innerHTML'不是一个函数 – Dennis
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。
你应该看看几个框架/库,这些类型的视图模型绑定可以在http://angularjs.org/或http://knockoutjs.com/中找到。 – Ken
你有没有试过['contenteditable'](https://developer.mozilla.org/en-US/docs/Web/HTML/Content_Editable)? –