[英]How do I remove a DOM element property?
如果我有一个属性className
设置为“test”的元素,如何删除与该属性关联的 HTML 属性?
我要实现的目标示例:
const set = (el, prop, value) => el[prop] = value;
const rm = (el, prop) => delete el[prop]; // How do I do this?
const el = document.createElement("div");
set(el, "className", "test"); // el: <div class="test"></div>
rm (el, "className"); // el: <div></div>
我是否必须将 map 属性设置为属性并使用removeAttribute()
? 如果是这样,是否有我可以使用的 DOM 提供的映射? 还是我必须自己写?
或者有没有我可以使用的delete el.className
类的东西?
其他属性的相同问题,例如onclick
、 htmlFor
等。
例子:
const el = document.createElement("div");
el.className = "test";
// How do I unset className?
delete el.className; // Doesn't do anything.
el.className = null; // Sets the string "null". Same for "undefined".
// Do I need to do this?
// If so, can I get this from somewhere in the DOM?
const propToAttrMap = { "className": "class", "htmlFor": "for", ... };
el.removeAttribute(propToAttrMap["className"]);
尝试将属性设置为空字符串。 它不一定会删除该属性,但应该使它无效。 对于像disabled
这样的 Boolean 类型,它应该以类似的方式工作。
我能想到的一个警告是,一旦一个元素被赋予了一个属性,它就会出现在查询选择器下,它在以前是不存在的。
const set = (el, prop, value) => el[prop] = value; const rm = (el, prop) => el[prop] = ""; const btn = document.querySelector("button") const div = document.querySelector("div") console.log("original:", div.innerHTML) console.log("classy elements:", document.querySelectorAll("[class]").length) set(btn, "className", "red") set(btn, "disabled", true) console.log("set both:", div.innerHTML) rm(btn, "className") console.log("rm className:", div.innerHTML) rm(btn, "disabled") console.log("rm disabled:", div.innerHTML) console.log("classy elements:", document.querySelectorAll("[class]").length)
<div><button>Click me!</button></div>
虽然 jQuery 提供了一个额外的方法(addProp() 和 removeProp())来设置和获取元素属性值,但是在普通的 JavaScript 中没有这么大的东西。元素属性,例如 href、title、alt 和 value,可以直接访问作为 JavaScript object 属性。
在下面找到一个例子。
var el = document.querySelector('a');
console.log(el.href);
if (el.title != 'Welcome') el.title = 'Welcome';
var inp = document.querySelector('input[type="text"]');
console.log(inp.value);
inp.value = 'Hello World!';
您甚至可以向 DOM 元素添加和删除新属性,如下所示。
var el = document.querySelector('div');
el.animal= { name: 'Lion'};
console.log(el.animal);
delete el.foo;
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.