如何使用 setAttribute 更新对象中的一个值?
How do I update one value within an object using setAttribute?
我有一个元素包含一个名为 "sound" 的属性。这个声音属性的值是一个对象。此对象中的属性之一是 "volume".
换句话说:
<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 和 on 属性):
element.setAttribute('sound', {
volume: '4'
});
我不想替换整个对象。我只想将一个值替换为一个 属性。有解决此问题的最佳方法吗?
您可以获得属性对应的对象,只替换您需要的属性。
像这样:
var data = element.getAttribute('sound');
data.volume = '4';
element.setAttribute('sound', data);
编辑
如果你在 html 中像真正的 JS 对象一样设置数据,你可以这样做:
var newData = JSON.parse(element.getAttribute('sound'));
newData.volume = 4;
element.setAttribute('sound', JSON.stringify(newData));
这是一个fiddle
您可以使用此处文档中的 setAttribute 的 3 参数版本:https://aframe.io/docs/core/entity.html#Updating-Multi-Property-Component-Data
具体来说,你可以这样做:
element.setAttribute("sound", "volume", "4");
我有一个元素包含一个名为 "sound" 的属性。这个声音属性的值是一个对象。此对象中的属性之一是 "volume".
换句话说:
<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 和 on 属性):
element.setAttribute('sound', {
volume: '4'
});
我不想替换整个对象。我只想将一个值替换为一个 属性。有解决此问题的最佳方法吗?
您可以获得属性对应的对象,只替换您需要的属性。
像这样:
var data = element.getAttribute('sound');
data.volume = '4';
element.setAttribute('sound', data);
编辑
如果你在 html 中像真正的 JS 对象一样设置数据,你可以这样做:
var newData = JSON.parse(element.getAttribute('sound'));
newData.volume = 4;
element.setAttribute('sound', JSON.stringify(newData));
这是一个fiddle
您可以使用此处文档中的 setAttribute 的 3 参数版本:https://aframe.io/docs/core/entity.html#Updating-Multi-Property-Component-Data
具体来说,你可以这样做:
element.setAttribute("sound", "volume", "4");