如果我有一個屬性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 ></div>
rm (el, "className"); // el: <div></div>
我是否必須將屬性映射到屬性并使用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"]);
uj5u.com熱心網友回復:
嘗試將屬性設定為空字串。它不一定會洗掉該屬性,但應該取消它。對于像它這樣的布爾型別disabled應該類似地作業。
我能想到的一個警告是,一旦一個元素被賦予了一個屬性,它就會出現在查詢選擇器下,它以前不會出現。
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>
uj5u.com熱心網友回復:
class是你的屬性&為了洗掉任何屬性,你只需要寫:
el.removeAttribute('your_attribute')
在你的情況下:
el.removeAttribute('class')

uj5u.com熱心網友回復:
雖然 jQuery 提供了一個額外的方法(addProp() 和 removeProp())來設定和獲取元素屬性值,但是在純 JavaScript 中沒有這么大的東西。元素屬性,例如 href、title、alt 和 value,可以作為 JavaScript 物件屬性直接訪問。
找到下面的一個例子。
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;
謝謝
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/438948.html
標籤:javascript dom
