javascript - 使用 getElementsByClassName 从类名中查找元素

标签 javascript css

如果类名如下所示,我真的不知道如何使用 getElementsByClassName() 找到元素。

这是一张关于 CSS 在他们网站上的样子的图片,我想使用 javascript 编辑背景图片。 CSS当我直接在 deverloper 工具中更改背景 url 时,网站上的图像会发生变化。但是使用 javascript 没有任何改变。

网站的 CSS:

.layer.interface-layer .main-column.right-column { 
  background: url(../img/gui/chat-powtarzalny-podklad.png) -251px 0px;
}

我的 JavaScript:

var panel = document.getElementsByClassName('.layer.interface-layer .main-column.right-column');

panel.style.background = "url(LINK)";

最佳答案

您的代码存在多个问题。根据 MDN document.getElementsByClassName (强调我的):

Returns an array-like object of all child elements which have all of the given class names.

首先,这意味着您需要对返回的对象进行索引:

var els = document.getElementsByClassName('.layer.interface-layer .main-column.right-column');
els[0].style.background = "...";

但是,这仍然不起作用,因为您试图自己选择的元素具有 .main-column.right-column 的类名。他们的祖先有类.layer.interface-layer

所以你要找的是document.querySelector .它接受一个 CSS 选择器,这正是您所期望的:

var panel = document.querySelector('.layer.interface-layer .main-column.right-column');
panel.style.backgroundImage = 'url(../img/gui/chat-powtarzalny-podklad.png)';

请注意,如果您想更新多个 元素,则需要改用document.querySelectorAll。 ,它返回一个 NodeList ,您可以将其视为数组。参见 this answer了解如何遍历节点并依次更新每个节点。

您使用的语法 "url(LINK)" 似乎也是错误的。不确定这是您实际尝试的还是只是一个例子。请参阅上文了解如何正确使用它。

关于javascript - 使用 getElementsByClassName 从类名中查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669308/

相关文章:

javascript - 当灯箱处于事件状态时使页面停止滚动

html - 仅使用 CSS 创建三列表? (没有表格元素)

javascript - 面板打开关闭不起作用

javascript - PhoneGap for iOS 中的通知

javascript - setTimeout 不适用于 Node.js 中的 Monq

html - 除以 3 个 div 的响应式顶部横幅图片

javascript - react : facing issues using css styles in jsx

javascript - 如何匹配三种格式的日期

javascript - 如何使用 fetch 将 FormData 从 javascript 发送到 ASP.NET Core 2.1 Web API

javascript - Bootstrap : select/option list doesn't get refreshed after programmatically adding item