单击标签不起作用时,使用javascript在div中更改HTML图像源

问题描述

单击标签时,我需要在HTML的div内更改图像。我不认为我需要使用jquery,我只想使用javascript。经过一番研究,看起来很简单,所有答案都是相同的,但我无法使它起作用。我知道单击标签时的功能有效,因为标签会更改颜色,但是图像不会更改,并且不会出现任何语法错误。我正在使用Chrome。我不知道我在做什么错。

这是HTML / CSS代码

<html>
<body>
  <div id="slc_on_label">
    <img src=https://ichef.bbci.co.uk/news/800/cpsprodpb/12A9B/production/_111434467_gettyimages-1143489763.jpg>
  </div>

  <style>
    #slc_on_label img {
      position:fixed;
      width:5.5%;
      left:10%;
      top:10%;
    }
  </style>

  <label class = "button" id="button" onclick="run(this)">0</label>

  <style>
  .button {background-color:Powderblue;
          font-size: 5vw;
        }
   </style>

  <script src="question.js" ></script>
</body>
</html>

这是JavaScript代码

function run(button) {
  document.getElementById("slc_on_label").src="https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313_1280.jpg";
  button.style = "background-color:red";
}

解决方法

您正在尝试在src上设置<div id="slc_on_label">属性,而不是其中的<img>

您可以使用document.querySelector()div内选择图像:

document.querySelector("#slc_on_label img").src =
    "https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313_1280.jpg";
,
function run(button) {
  document.querySelector('slc_on_label img').src =
    'https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313_1280.jpg';
  button.style.backgroundColor = 'red';
}

也不要破坏按钮样式。

,

<html>

<head>
    <style>
        #slc_on_label img {
            position: fixed;
            width: 5.5%;
            left: 10%;
            top: 10%;
        }

        .button {
            background-color: Powderblue;
            font-size: 5vw;
        }
    </style>
</head>

<body>
    <div id="slc_on_label">
        <img src="https://ichef.bbci.co.uk/news/800/cpsprodpb/12A9B/production/_111434467_gettyimages-1143489763.jpg">
    </div>

    <label class="button" id="button" onclick="run(this)">0</label>

    <script>
        function run(button) {
            document.querySelector("#slc_on_label img").setAttribute('src','https://cdn.pixabay.com/photo/2016/12/13/05/15/puppy-1903313_1280.jpg');
            button.style = "background-color:red";
        };
    </script>
</body>

</html>