使用 javascript 动态更改 <div> 背景图像

tma*_*091 5 html javascript url dynamic href

我正在寻找一些帮助来编写一个 javascript 片段,该片段将动态更新 div style="background-image:url..." 以匹配其上方的 a href。这是在投资组合网站上,所以这是一个画廊,所有图像都可以同时显示。我需要片段来遍历每个人a href并嵌套div在它下面并使它们匹配,每个图像都是唯一的(不想要同一图片的页面 20 次)我刚刚开始学习 JS,所以我一直在与这个斗争。这是html。

<a id ="tobematched" href="imgs/galleryphotos/1.jpg">
Run Code Online (Sandbox Code Playgroud)

这个href应该从上面复制到下面的div样式url。

<div id ="matcher" class="img-container" style="background-image: url('imgs/notcorrect/currently.jpg');"></div>
</a>
Run Code Online (Sandbox Code Playgroud)

整体的样子是这样的……

<a id ="tobematched" href="imgs/galleryphotos/1.jpg">
    <div id ="matcher" class="img-container" style="background-image: url('imgs/notcorrect/currently.jpg');"></div>
</a>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

这是我的想法,到目前为止......

function abc() {
    var a = document.getElementById("tobematched").
    var b = document.getElementById("matcher").style.backgroundImage;

                        }
Run Code Online (Sandbox Code Playgroud)

不知道从哪里开始,因为我不知道如何获取 href ......我认为我走在正确的轨道上。

Pab*_*123 3

您可以使用querySelector()和属性的组合.href来获取您需要的内容:

var targetDiv = document.querySelector('#matcher');
var url = targetDiv.parentNode.href;
targetDiv.style.backgroundImage = 'url(' + url + ')';
Run Code Online (Sandbox Code Playgroud)

或者您可以使用:

var url = document.querySelector('#tobematched').href
Run Code Online (Sandbox Code Playgroud)

第二个选项不依赖于文档的结构,但会导致 JS 再次查看整个文档。

如果您使用的是 jQuery:

var url = $('#tobematched')attr('href');
$('#matcher').css('background-image', 'url(' + url + ')');
Run Code Online (Sandbox Code Playgroud)

实例


编辑:根据OP在评论中的进一步描述,这是您实际需要的代码:

var targetDivs = document.querySelectorAll('.img-container');

for (var i = 0; i < targetDivs.length; i++) {
  var url = targetDivs[i].parentNode.href;
  targetDivs[i].style.backgroundImage = 'url(' + url + ')';
}
Run Code Online (Sandbox Code Playgroud)