javascript - 删除节点的内联事件处理程序/属性

标签 javascript html

给定一个来自 dom 的 HTML 节点, 我需要删除所有内联事件处理程序/属性,例如:onclick、onmouseover、onmousedown 等。

我知道:

document.getElementById("some_id").attributes

返回所有的属性,我可以去掉一些属性,但是还有一些属性,比如:id、class、name等。

如何区分这两种类型的属性?

解决问题的完全不同的方法也是一种选择。

编辑:我试图只删除内联事件, 并且我还需要在删除之前将它们“保存”到别处,因此不能通过克隆来完全处置

最佳答案

在这里你得到所有的元素属性,创建一个数组,如果任何attributeon开头,检查for循环
然后用那个内联事件处理程序名称/值创建一个对象推送array,最后将其从节点中移除:

var el = document.getElementById("button1");
var listOfEvents=[];  
var attributes = [].slice.call(el.attributes);  

for (i = 0; i < attributes.length; i++){
    var att= attributes[i].name; 

   if(att.indexOf("on")===0){

     var eventHandlers={};
     eventHandlers.attribute=attributes[i].name;
     eventHandlers.value=attributes[i].value;
     listOfEvents.push(eventHandlers);
     el.attributes.removeNamedItem(att);             
   }     
} 

检查下方片段

var el = document.getElementById("button1");

var listOfEvents = [];
var attributes = [].slice.call(el.attributes);

for (i = 0; i < attributes.length; i++) {
  var att = attributes[i].name;

  if (att.indexOf("on") === 0) {
    console.log(att);
    var eventHandlers = {};
    eventHandlers.attribute = attributes[i].name;
    eventHandlers.value = attributes[i].value;
    listOfEvents.push(eventHandlers);
    el.attributes.removeNamedItem(att);

  }


}


console.log(listOfEvents);


/* logs   [[object Object] {
  attribute: "onmousedown",
 value: "mouseDown();"
}, [object Object] {
  attribute: "onmouseup",
  value: "mouseUp();"
}, [object Object] {
  attribute: "onclick",
  value: "doSomething(this);"
}] */
<div>
  <input id="button1" type="button" onmousedown="mouseDown();" onmouseup="mouseUp();" onclick="doSomething(this);" value="Click Me" />
</div>

关于javascript - 删除节点的内联事件处理程序/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35962586/

相关文章:

html - 绝对定位元素的不透明度

javascript - 转换缩放元素间距问题

javascript - Jade block 扩展数据库中的每个项目?

javascript - 如何将类添加/切换到元素以便将汉堡菜单切换到 X 以便关闭并再次返回

javascript - 使用 jQuery/JavaScript 获取带有 float li 的 ul 宽度

javascript - 从 JavaScript 中删除 HTML li 和文本

javascript - 如何支持跨浏览器多选文本?

javascript - 获取日期时间输入字段的值

javascript - 如何比较 Cappuccino 中的两个对象是否相等

javascript - 通过按键事件触发功能时无​​法从 IE 中的文本框获取值