Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用对象向元素添加属性_Javascript - Fatal编程技术网

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的用途是什么呢。我见过很多次,但直到今天才知道它们是干什么的