Javascript DOM属性来指示元素是否已更新

Javascript DOM属性来指示元素是否已更新,javascript,html,dom,Javascript,Html,Dom,我正在使用“contenteditable=true”来启用对某些表格单元格的编辑。现在,我想知道页面上的哪些可编辑元素实际上已被用户编辑,以便我可以处理更改 尽管我可能会为此使用事件侦听器,但在我的例子中,这种方法将是乏味的。该页面是动态生成的,具有数量可变的可编辑元素。我希望避免为每个可编辑元素动态添加事件侦听器 我想知道DOM是否已经有一个属性/标志来指示元素是否已经更新。如果是这样的话,我希望有一个大致如下的解决方案: var element_123 = document.getElem

我正在使用“contenteditable=true”来启用对某些表格单元格的编辑。现在,我想知道页面上的哪些可编辑元素实际上已被用户编辑,以便我可以处理更改

尽管我可能会为此使用事件侦听器,但在我的例子中,这种方法将是乏味的。该页面是动态生成的,具有数量可变的可编辑元素。我希望避免为每个可编辑元素动态添加事件侦听器

我想知道DOM是否已经有一个属性/标志来指示元素是否已经更新。如果是这样的话,我希望有一个大致如下的解决方案:

var element_123 = document.getElementById("element_id_123");
 var was_edited = element_123.was_edited;

谢谢。

我认为浏览器中没有类似的功能。但是,您可以使用类似以下()的内容:

$(“#didichange_tbl”)。委托(“输入”,“更改”,函数(){
log(“表已更改!!”);
});

我尝试了一些解决方案,我发现最好的是在coderwall.com博客上写的:。我决定将文章内容添加到一篇文章中,以防在某个时候原始内容不再存在

这就是他的解决方案:
var editable=document.getElementById('text');
可编辑。addEventListener('input',function(){
log('嘿,有人在我的文本中更改了某些内容!');
});

Lorem ipsum dolor sit amet,是一位杰出的献身者。在arcu ac dui eleifend进行测试。我是艾库利斯,我是马萨。egestas cursus的Quisque hendrerit nisl。

您需要做的是将
contenteditable
仅设置为叶元素和文本节点,然后侦听
input
事件。这样,您就可以提取事件的确切来源

document.body.addEventListener('keydown',event=>{
console.log(event.target);
});
函数addContentEditable(el){
如果(el.children.length==0){el.setAttribute('contenteditable',true)}
如果(el.nodeType==3){el.setAttribute('contenteditable',true)}
[…el.children].forEach(c=>{
添加内容(c);
});
}
addContentEditable(document.body)

一些文本

更多的文字和链接

更多文本


您需要收听
keyup
keydown
事件。我想不出另一种方法。@Spingolini我正在努力避免编写低级侦听器代码。我的问题是DOM是否已经跟踪元素是否被修改。我不需要DOM来告诉我做了什么更改,只需要告诉我元素是否被更改。使用sessionStorage,设置sessionStorage,并在提交时比较字符串,这样,您就可以在客户端使用一个很小的存储空间,并且在有人键入时不会异常地抛出事件。@Adrian您不理解我的问题,您需要自己来完成。没有类似于
的属性。看一看这篇文章,它可能会解决您的问题:像这样的东西可以工作,但我需要在单独的表单元格中这样做。在表级别执行此操作将无法识别哪些特定单元格已更新。此外,使用这种方法,我需要为每个表单元格分配一个唯一的id,然后将该id存储(例如,在sessionStorage中)以指示它已被更新。这很快就变成了一个复杂的解决方案,尽管它在技术上是可行的。@11和2我的建议将使用on而不是delegate。检查