[英]Get element being changed in contenteditable
如何获取正在编辑的元素?
HTML
<div contenteditable=true>
<pre>
<span class="1">First line</span>
<span class="2">Second line</span>
</pre>
</div>
在编辑“第一行”时,如何检查正在编辑的跨度类?
JS
window.addEventListener("input", inputHandler, false);
function inputHandler(e) {
console.log(e.target);
}
打印出整个div类:
<div contenteditable=true>
<pre>
<span class="1">First line</span>
<span class="2">Second line</span>
</pre>
</div>
但我只想获取<span class="1">First line</span>
Span element
不能具有input/keypress/keyup
... events
并且这些events
也不能在其上注册。 虽然有其他的方法来做到这一点,你可以选择使用DOMCharacterDataModified
事件,请检查下面的代码片段 。
var div = document.getElementById("edit"); div.addEventListener("DOMCharacterDataModified", inputHandler, false); function inputHandler(e) { var elem = e.target.parentNode; alert("Element: " + elem.tagName + " class name: " + elem.className); }
<div id="edit" contenteditable=true> <pre> <span class="1">First line</span> <span class="2" >Second line</span> </pre> </div>
您必须对计划修改的每个部分分别影响contenteditable
属性。
您必须选择如何向所有事件监听器添加事件监听器。 例如,像这样:
var editables = document.getElementsByClassName('editable'); for (var editable of editables) { editable.addEventListener("input", inputHandler, false); } function inputHandler(e) { console.log(e.target); }
<div> <pre> <span class="editable 1" contenteditable>First line</span> <span class="editable 2" contenteditable>Second line</span> </pre> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.