繁体   English   中英

如何删除 DOM 元素属性?

[英]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类的东西?

其他属性的相同问题,例如onclickhtmlFor等。

例子:

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>

class是你的属性&为了删除任何属性,你只需要写:

el.removeAttribute('your_attribute')

在你的情况下:

el.removeAttribute('class')

在此处输入图像描述

虽然 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM