Javascript 如何在没有jQuery或延迟加载的情况下延迟背景图像

Javascript 如何在没有jQuery或延迟加载的情况下延迟背景图像,javascript,Javascript,基于Patrick Sexton,我希望以与img相同的方式延迟背景图像: 如何使用背景进行同样的操作 <div style="background:url(your-image-here)"></div> 您也可以这样做,但是您可以在init函数中更改背景而不是源代码 <div id='my-div' style="" data-src="your-image-here"></div> <script> function init

基于Patrick Sexton,我希望以与img相同的方式延迟背景图像:

如何使用背景进行同样的操作

<div style="background:url(your-image-here)"></div>

您也可以这样做,但是您可以在init函数中更改背景而不是源代码

<div id='my-div' style="" data-src="your-image-here"></div>

<script>
function init() {
var backgroundDefer = document.getElementById('my-div');
    if(backgroundDefer.getAttribute('data-src')) {
        backgroundDefer.style.background="url("+backgroundDefer.getAttribute('data-src')+")";
    }
}
window.onload = init;
</script>

如果您只想在纯JS页面加载后设置背景,请使用:

window.onload="myFunction()";

myFunction在其中进行加载。

所需的更改只是我们选择元素的方式

queryselectoral'div[data src]'

我们如何在这里设置值而不是设置src属性,我们需要设置style属性

编辑:我甚至会在这里避免JavaScript中的属性检查,因为我们的选择器会这样做

在此处标记编辑代码:

函数初始化{ var imgDefer=document.queryselectoral'div[data src]'; var style=背景图像:url{url}; 对于变量i=0;i 我还必须首先在背景URI图像中创建一个空字符串

<div id="my-div" class="parallax-background" data-stellar-background-ratio="0.7" data-src="https://d5y2y5rl4e57i.cloudfront.net/GWL_atl-108.jpg" style="background-image:url('')"></div>

<script>

function init() {
  var backgroundDefer = document.getElementById('my-div');

  //have to use document.getElementById in order to use getAttribute() function

  if(backgroundDefer.getAttribute('data-src')) {
        backgroundDefer.style="background-image:url("+backgroundDefer.getAttribute('data-src')+")";
  }
}
window.onload = init;

</script>

我尝试将其用于一个类var backgroundDefer=document.getElementsByClassName'class-image';但它不起作用。Uncaught TypeError:backgroundDefer.getAttribute不是一个函数,您能告诉我如何只选择class=deferImage的div吗?document.getElementsByClassNamedeferImage可用于此目的;还要检查选择器的浏览器兼容性-
<div id="my-div" class="parallax-background" data-stellar-background-ratio="0.7" data-src="https://d5y2y5rl4e57i.cloudfront.net/GWL_atl-108.jpg" style="background-image:url('')"></div>

<script>

function init() {
  var backgroundDefer = document.getElementById('my-div');

  //have to use document.getElementById in order to use getAttribute() function

  if(backgroundDefer.getAttribute('data-src')) {
        backgroundDefer.style="background-image:url("+backgroundDefer.getAttribute('data-src')+")";
  }
}
window.onload = init;

</script>