鱼C论坛

 找回密码
 立即注册
查看: 1832|回复: 1

[已解决]js中不能用一个元素的backgroudImage去替换另一个元素的backgroudImage吗?

[复制链接]
发表于 2023-5-28 00:49:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
要求:当用户点击相应的按钮后,将网页body的backgroudImage清除并替换成所点击按钮的backgroudImage
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>案例-百度换肤</title>
  8.     <style>
  9.         *{
  10.             margin: 0;
  11.             padding: 0;
  12.         }
  13.         body{
  14.             background-image: url(image/pic1.png);
  15.             background-size: cover;
  16.         }
  17.         button{
  18.             width: 90px;
  19.             height: 40px;
  20.         }
  21.         .b1{
  22.             background-image: url('image/pic1.png');
  23.         }
  24.         .b2{
  25.             background-image: url('image/pic2.png');
  26.         }
  27.         .b3{
  28.             background-image: url('image/pic3.png');
  29.         }
  30.         .b4{
  31.             background-image: url('image/pic4.png');
  32.         }
  33.         .b5{
  34.             background-image: url('image/pic5.png');
  35.         }
  36.     </style>
  37. </head>
  38. <body>
  39.     <button class="b1"></button>
  40.     <button class="b2"></button>
  41.     <button class="b3"></button>
  42.     <button class="b4"></button>
  43.     <button class="b5"></button>
  44.     <script>
  45.         //获取所有元素
  46.         const buttons = document.querySelectorAll('button')
  47.         const body = document.body
  48.         //使用排他算法替换背景
  49.         for(let i=0;i<buttons.length;i++){
  50.             buttons[i].onclick = function(){
  51.                 //清楚当前背景
  52.                 body.style.backgroundImage = 'none'
  53.                 //根据当前按钮更换背景
  54.                 body.style.backgroundImage = "url("+this.style.backgroudImage+")"
  55.             }
  56.         }
  57.     </script>
  58. </body>
  59. </html>
复制代码
最佳答案
2023-5-28 01:09:39
你的代码逻辑是对的,但是在获取元素的backgroundImage时,拼写错误了。应该是"backgroundImage"而不是"backgroudImage"。

修改后的JavaScript代码如下:

  1. <script>
  2.     //获取所有元素
  3.     const buttons = document.querySelectorAll('button')
  4.     const body = document.body
  5.     //使用排他算法替换背景
  6.     for(let i=0;i<buttons.length;i++){
  7.         buttons[i].onclick = function(){
  8.             //清除当前背景
  9.             body.style.backgroundImage = 'none'
  10.             //根据当前按钮更换背景
  11.             body.style.backgroundImage = "url("+this.style.backgroundImage+")"
  12.         }
  13.     }
  14. </script>
复制代码


这样,点击按钮后就能把body的背景图片更换为按钮的背景图片了。

请注意,由于路径问题,可能还需要在"backgroundImage"属性前加上"window.getComputedStyle(this)"来获取计算后的样式属性。

  1. <script>
  2.     //获取所有元素
  3.     const buttons = document.querySelectorAll('button')
  4.     const body = document.body
  5.     //使用排他算法替换背景
  6.     for(let i=0;i<buttons.length;i++){
  7.         buttons[i].onclick = function(){
  8.             //清除当前背景
  9.             body.style.backgroundImage = 'none'
  10.             //根据当前按钮更换背景
  11.             body.style.backgroundImage = window.getComputedStyle(this).backgroundImage
  12.         }
  13.     }
  14. </script>
复制代码


这样可以更好地获取元素实际渲染的背景图片。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-28 01:09:39 | 显示全部楼层    本楼为最佳答案   
你的代码逻辑是对的,但是在获取元素的backgroundImage时,拼写错误了。应该是"backgroundImage"而不是"backgroudImage"。

修改后的JavaScript代码如下:

  1. <script>
  2.     //获取所有元素
  3.     const buttons = document.querySelectorAll('button')
  4.     const body = document.body
  5.     //使用排他算法替换背景
  6.     for(let i=0;i<buttons.length;i++){
  7.         buttons[i].onclick = function(){
  8.             //清除当前背景
  9.             body.style.backgroundImage = 'none'
  10.             //根据当前按钮更换背景
  11.             body.style.backgroundImage = "url("+this.style.backgroundImage+")"
  12.         }
  13.     }
  14. </script>
复制代码


这样,点击按钮后就能把body的背景图片更换为按钮的背景图片了。

请注意,由于路径问题,可能还需要在"backgroundImage"属性前加上"window.getComputedStyle(this)"来获取计算后的样式属性。

  1. <script>
  2.     //获取所有元素
  3.     const buttons = document.querySelectorAll('button')
  4.     const body = document.body
  5.     //使用排他算法替换背景
  6.     for(let i=0;i<buttons.length;i++){
  7.         buttons[i].onclick = function(){
  8.             //清除当前背景
  9.             body.style.backgroundImage = 'none'
  10.             //根据当前按钮更换背景
  11.             body.style.backgroundImage = window.getComputedStyle(this).backgroundImage
  12.         }
  13.     }
  14. </script>
复制代码


这样可以更好地获取元素实际渲染的背景图片。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 12:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表