javascript - 更改元素的背景图像

标签 javascript html

因此,我在创建一个非常简单的函数时遇到了一些问题,该函数应该更改 div 元素的背景图像以匹配鼠标悬停在其上的任何图像。

HTML 看起来像

<div id = "image">
    Hover over an image below to display here.
</div>

<img class = "preview" alt = "Styling with a Bandana" src = "https://s3-us-west-2.amazonaws.com/s.cdpn.io/389177/bacon.jpg" onmouseover = "upDate(this)" onmouseout = "unDo()">

这只是我想要更改的 div 元素以及其中一张图像。 所以我们的函数应该接受一个图像元素作为参数。但我在访问此图像参数的 src 属性并在 .style.backgroundImage 属性中使用该属性时遇到了很多麻烦。

我当前的代码是:

function upDate(previewPic){
    var div_element = document.getElementById('image').innerHTML;
    var picurl = "url(previewPic.getAttribute('src'))"
    div_element.style.backgroundImage = "url(picurl)";
 }

这让我在浏览器控制台上出现 Uncaught TypeError: Cannot set property 'backgroundImage' of undefined 错误。 如果你能看出来,我正在尝试将实际的 div 对象放入变量中,然后将图片 url 放入变量中。然后我想使用 .style.backgroundImage 属性。这不起作用。但解决方案可能非常简单。我可以做什么来修复它?

最佳答案

您的代码存在多个问题。

  1. 获取内部 html 只是将变量设置为元素内部内容的字符串表示形式,这没什么,因为它是 <img>标签。
  2. 本质上,您将所有内容都放在引号中,因此 javascript 不会对其执行任何操作。

删除.innerHTML从函数的第一行开始,然后将 javascript 需要评估的部分作为代码从引号中取出。

将代码更改为:

function upDate(previewPic){
    var div_element = document.getElementById('image');
    var picurl = "url(" + previewPic.getAttribute('src') +")"
    div_element.style.backgroundImage = picurl;
}

这应该有效。

关于javascript - 更改元素的背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37892469/

相关文章:

javascript - PrimeFaces p :blockUI blocking a certain component dynamically (on JSF EL condition)?

Javascript在点击时获取 child 的索引

javascript - 计算 HH :mm using keyup in javascript or jquery 中的时间差

html - 为什么我的标题栏与滚动条重叠

javascript - 尝试通过 jQuery 或 JavaScript 添加 Font Awesome 图标并使电话号码可点击

javascript - AJAX 回合制游戏

future 8 天的 JavaScript date() 对象

javascript - 防止 select2-dropdown 在接近动画时被分离

html - Angular 5. 如何动态添加指向包含特定标签的字符串的链接。像 '@'

html - iOS:运行 webview 时排除某些 URL