javascript - 使用 Javascript,我如何定位和更改没有 ID 或类的图像的 URL?
问题描述
如何更改深埋在 div 中的 URL,并且仅当存在 parent>parent>parent div 的类时才更改它的 URL。
上下文:我正在尝试更改滚动时更改其背景颜色的粘性标题中的徽标图像。当更改的状态处于活动状态时,其中一个父 div 添加了一个名为“.bt-active”的类。
像这样,正常的状态代码是:
<section class="bdt-sticky">
<div data-id="208ba95" class=" element element-208ba95 logo widget widget-image" id=" logo" data-element_type="image.default">
<div class=" widget-container">
<div class=" image">
<a href="https://site.uk/" data- open-lightbox=""><img src="logo-1.png" class="attachment-full size-full" alt="" width="180" height="26"></a>
</div>
</div>
</div>
粘性激活时的代码是:
<section class="bdt-sticky bdt-active">
<div data-id="208ba95" class=" element element-208ba95 logo widget widget-image" id=" logo" data-element_type="image.default">
<div class=" widget-container">
<div class=" image">
<a href="https://site.uk/" data- open-lightbox=""><img src="logo-1.png" class="attachment-full size-full" alt="" width="180" height="26"></a>
</div>
</div>
</div>
我想将处于活动状态的徽标更改为 src="logo-2.png"
解决方案
img
确实有课。其中几个。如果它们由您可能不想定位的其他图像共享,您只需查看其祖先以通过后代和/或子组合器添加更多特异性。
document.querySelector
与这些选择器中的任何一个一起使用都会以 为目标img
,并且限制性越来越强:
.attachment-full
.attachment-full.size-full
.image .attachment-full
.image .attachment-full.size-full
.image > .attachment-full.size-full
.image > .attachment-full
.widget-container .attachment-full
.widget-container .attachment-full.size-full
.widget-container .image .attachment-full
.widget-container .image .attachment-full.size-full
.widget-container > .image > .attachment-full.size-full
你明白了。:-)
如果你喜欢,你可以把它放在img
前面.attachment-full
来限制img
元素。
您还可以定位src
属性:
[src="logo-1.png"]
这可以与上述任何一种结合使用(例如:)img[src="logo-1.png"].attachment-full
。
现场示例:
function check(selector) {
console.log(selector + " => " + document.querySelector(selector) ? "found" : "not found");
}
check(".attachment-full");
check(".attachment-full.size-full");
check(".image .attachment-full");
check(".image .attachment-full.size-full");
check(".image > .attachment-full.size-full");
check(".image > .attachment-full");
check(".widget-container .attachment-full");
check(".widget-container .attachment-full.size-full");
check(".widget-container .image .attachment-full");
check(".widget-container .image .attachment-full.size-full");
check(".widget-container > .image > .attachment-full.size-full");
<section class="bdt-sticky">
<div data-id="208ba95" class=" element element-208ba95 logo widget widget-image" id=" logo" data-element_type="image.default">
<div class=" widget-container">
<div class=" image">
<a href="https://example.com/" data- open-lightbox=""><img src="https://via.placeholder.com/150x150/0000FF/808080?text=Example" class="attachment-full size-full" alt=""></a>
</div>
</div>
</div>
</section>
推荐阅读
- r - 在 geom_bar 中插入文本
- java - 如何使用房间实体(使用类型转换器)来解析 Gson
- android - 为什么 PackageManager.queryIntentActivities 方法只返回 ACTION_VIEW 的默认浏览器信息?
- javascript - 有没有办法修改 FullCalendar 4 中的多日事件以显示为这样?
- python - 如何创建一个接受字典输入的函数?
- sql - oracle sql中唯一和重复的Sql查询?
- tensorflow - 如何从 .cfg 文件加载暗网 YOLOv3 模型并从 .weights 文件加载权重,并将带有权重的模型保存到 .h5 文件?
- ruby-on-rails - Rails 默认行为:为什么 Rails 默认不生成不同的 Etag 或返回 304 Not Modified?
- operating-system - 不是特定于操作系统的库是否实际上使用了它们正在运行的操作系统的 API?
- c# - 如何在c#中将格鲁吉亚日历转换为波斯日历