Javascript 如何使用对象向元素添加属性
我正在尝试添加一个元素,其中包含一些属性,如Javascript 如何使用对象向元素添加属性,javascript,Javascript,我正在尝试添加一个元素,其中包含一些属性,如href,下载 请看下面的代码 var el = document.createElement('a'); el.href = '..' el.download = 'foo.mp3' 上面的方法很有效,但在我看来,el似乎被视为js对象和。href,。下载是属性 例如: Person = {}; Person.name = 'foo' Person.age = 25 在上面的示例中,我可以简单地执行以下操作,并且与上面的操作相同: Perso
href
,下载
请看下面的代码
var el = document.createElement('a');
el.href = '..'
el.download = 'foo.mp3'
上面的方法很有效,但在我看来,el
似乎被视为js对象
和。href
,。下载
是属性
例如:
Person = {};
Person.name = 'foo'
Person.age = 25
在上面的示例中,我可以简单地执行以下操作,并且与上面的操作相同:
Person = {name: 'foo', age: 25}
但它不适用于el
,例如:
el = {href: '..', download: 'foo.mp3'}
那么,为什么它不起作用?我做错了什么?如果有。对象是经过修改而不是重新分配的对象。你说得对。
el
是一个对象。当您使用=
更改它时,它将不会引用元素
您可以在循环中为..使用
let obj = {href: '..', download: 'foo.mp3'};
for(let k in obj){
el[k] = obj[k]
}
请参见下面的工作示例
var el=document.createElement('div');
让obj={className:'red',id:'big',innerHTML:'Text'};
for(让k在obj中){
el[k]=obj[k]
}
document.body.appendChild(el)
.red{
颜色:红色;
}
#大的{
字体大小:40px;
}
将覆盖或设置变量。
在您的情况下,您需要覆盖变量,而不是更改其属性
el = {href: '..', download: 'foo.mp3'}
要更改其属性,请查看maheer提供的解决方案。如果使用document.createElement
它们,则必须使用elment.setAttribute来定义属性值,例如:
let el = document.createElement('a');
el.setAttribute("href","yor_ref");
...
href
和download
不仅仅是常规属性。它们是getter/setter对,反映您对DOM所做的更改。例如:
let obj = {
get prop() { console.log("property retrieved"); },
set prop(v) { console.log("property set to " + v); },
};
obj.prop = "test"; // this calls the setter
obj = { prop: "test" }; // this does not trigger the setter, it replaces the object as a whole
document.createElement()
创建/返回一个表示DOM树的节点,该节点具有大量属性和方法。上一个示例创建了一个具有两个属性的对象,href
和下载
,这两个属性都不适合附加到DOM树中。(另外,el
被视为一个对象,因为它就是这样。只是不是一个空的。)HTML元素!==这很有趣。那么,getter的用途是什么呢。我见过很多次,但直到今天才知道它们是干什么的