如何使用setAttribute更新对象中的一个值

How do I update one value within an object using setAttribute?

本文关键字:一个 setAttribute 何使用 更新 对象      更新时间:2024-05-03

我有一个元素,它包含一个名为"sound"的属性。此声音属性的值是一个对象。此对象中的属性之一是"体积"。

换句话说:

<a-entity position='0 0 0' sound='src: url; on: click; volume: 2.0;'></a-entity>

所以它是这样的:

{
  position: '0 0 0',
  sound: {
    src: 'url',
    on: 'click',
    volume: '2.0'
  }
}

我正在使用setAttribute更新卷属性,但我不知道是否有一种有效的方法可以只针对一个属性而不更改对象中的其他属性。

基本上,这会替换声音对象并删除所有未指定的属性(删除属性上的src and):

element.setAttribute('sound', {
  volume: '4'
});

我不想替换整个对象。我只想为一个属性替换一个值。有最好的方法吗?

您可以使用文档中的setAttribute的3参数版本:https://aframe.io/docs/core/entity.html#Updating-多属性组件数据

具体来说,你可以做一些事情,比如:

element.setAttribute("sound", "volume", "4");

您可以获取与属性相对应的对象,并只替换所需的属性。

类似这样的东西:

var data = element.getAttribute('sound');
data.volume = '4';
element.setAttribute('sound', data);

编辑

如果你像真正的JS对象一样在html中设置数据,你可以这样做:

var newData = JSON.parse(element.getAttribute('sound'));
newData.volume = 4;
element.setAttribute('sound', JSON.stringify(newData));

这是一个小提琴