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

tom*_*mes 2 html javascript html5

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

我知道:

document.getElementById("some_id").attributes
Run Code Online (Sandbox Code Playgroud)

返回所有属性,我可以消除一些属性,但是还有一些属性,例如:id,class,name等。

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

也可以选择完全不同的方法来解决问题。

编辑:我试图仅删除内联事件,并且我还需要在删除之前将它们“保存”到其他位置,所以克隆以完全处置不是一个选择

The*_*ess 5

在这里,您得到了所有内容element attributes,制作了一个em 数组,检查是否有attribute以开头的循环on
然后object使用name/valuethat inline event handler,将push其放入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);             
   }     
} 
Run Code Online (Sandbox Code Playgroud)

检查以下代码段

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);             
   }     
} 
Run Code Online (Sandbox Code Playgroud)
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);"
}] */
Run Code Online (Sandbox Code Playgroud)