将 JavaScript 对象中的值添加为元素上的类

Adding values from a JavaScript object as classes on an element

提问人: 提问时间:8/25/2023 更新时间:8/25/2023 访问量:24

问:

在 JavaScript 中,我如何获取对象的值并将每个值作为单独的类添加到 DOM 中的元素上?

例如,假设我有这个对象:

const METADATA = {
    foo: 'test1',
    bar: 'test2'
};

我想将此对象中存在的值添加为标签上的两个独立类。<html>

为了实现这一点,我尝试在jQuery方法中指定METADATA对象的属性:.addClass

$('html').addClass( METADATA["foo","bar"] );

但这只将对象的最后一个值添加为标签上的类,这让我相当困惑。<html>

有什么想法吗?

JavaScript 对象 属性

评论


答:

1赞 T.J. Crowder #1

METADATA["foo","bar"]只获取属性的值,因为你使用的是逗号运算符,这有点奇怪:它计算它的第一个操作数 (),扔掉该值,然后计算它的第二个操作数 () 并将其作为结果。所以它与 or 相同(因为评估没有副作用)。bar"foo""bar"METADATA["bar"]METADATA.bar"foo"

相反,您需要单独获取每个值:

$('html').addClass([METADATA.foo, METADATA.bar]);

这之所以有效,是因为允许您提供要添加的类名数组。 (或者,只需调用两次。addClassaddClass

或者不带 jQuery:

document.documentElement.classList.add(METADATA.foo, METADATA.bar);

方法允许您指定多个类名以添加为离散参数。addDOMTokenList

评论

0赞 8/25/2023
感谢您的澄清。我以为这只会同时得到两者,但我想不是。$('html').addClass( METADATA["foo","bar"] );METADATA.fooMETADATA.bar