Javascript/HTML - 用 onclick 重复一个函数

标签 javascript html jquery function repeat

我是 Javascript/HTML 的初学者。所以如果我遗漏了一些明显的东西,我很抱歉。

我的任务: 在我的网站上,我想显示一张图片,该图片在网站加载或刷新时始终相同。在该图片旁边,我想实现一个按钮,上面写着:“随机播放”。此按钮隐藏最初显示的第一张图片,然后显示从数组中选择的随机图片。图片更改后,“随机播放”按钮应该可以再次点击,每次点击它应该从数组中随机选择一张新图片。第一张初始图片只应在网站刷新时再次显示。

我的问题: 单击“随机播放”按钮时,图片会发生变化,但按钮和我要编码的应该显示在网站上的所有其他内容也会消失。所以不可能再次点击。为了重复选择一个新的随机图像,我将我的数组放在一个函数中,该函数是通过按钮上的 oncklick 选择的(我认为我的问题就在这里)。如果我删除数组周围的这个函数,单击时按钮不会消失,但按钮不能单击多次。这个问题的图片包含在这篇文章的底部。我希望你能理解我的问题,并能帮助我。谢谢!

代码:

<body>
  <!-- button with functions:hide initial picture, select random picture, show random picture-->
  <button onClick="hideNumber(); shuffle(); showMeme();">Shuffle</button>
  <!--initial picture thats not random and always shown when page is loaded-->
  <div>
    <img id="number" src="images/zahl1.jpg" alt="Number">
  </div>

  <script type="text/javascript">
    function hideNumber() {
    var x = document.getElementById("number");
    if (x.style.display == "none") {
    } else {
      x.style.display = "none";
    }
  }
//function so the button should be reclickable / array filled with pictures
function shuffle(){
  var images1 = [],
  index1 = 0;
  images1[0] = "<div><img src='images/meme1.jpg' id='Meme1' style='visibility:hidden' alt='meme1'></div>";
  images1[1] = "<div><img src='images/meme2.jpg' id='Meme1' style='visibility:hidden' alt='meme2'></div>";
  images1[2] = "<div><img src='images/meme3.jpg' id='Meme1' style='visibility:hidden' alt='meme3'></div>";
  //selecting random number
  index1 = Math.floor(Math.random() * images1.length);
  //displaying random image out of array
  document.write(images1[index1]);
}
//execute function? (not sure if done right)
  shuffle();
//function to show the random picture when button is clicked
  function showMeme() {
        document.getElementById('Meme1').style.visibility='visible';
      }
  </script>
</body>

Here is a picture which shows the website when its first loaded

Second picture shows what happens the button is clicked. First picture dissapears and second random picture shows (just how it should be) but the button to generate a different random picture just dissapears

最佳答案

document.write将替换整个页面。给你<div>使用初始图像 ID 并使用它来替换此元素的内容:

<div id="wrapper">
    <img id="number" src="images/zahl1.jpg" alt="Number">
</div>

替换document.write(images1[index1]);与:

document.getElementById('wrapper').innerHTML = images1[index1];

请注意,您可以删除 style='visibility:hidden'样式并摆脱可见性切换,因为数组中的元素是简单的字符串,此处不加载任何图像,并且当前显示的图像将被完全替换。

您可以通过简单地替换图像 src 来进一步改进它属性而不是替换整个 HTML block ,除非您有理由做更多的事情。

关于Javascript/HTML - 用 onclick 重复一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65444459/

相关文章:

javascript - 可调整大小的 div 不在包含参数内

html - 在具有 RTL 方向的文本字段中输入数字显示错误的输出

javascript - 删除输入文本的 Chrome 样式(列表)

javascript - JQuery 和 Chrome 扩展

javascript - Epiceditor 与 MathJax 配对

JavaScript 方法,不带括号的调用方法

javascript - 检查占位符文本中是否存在 null 或空值

javascript - 必需的复选框组

javascript - jquery ui 对话框按钮

html - 有序列表编号和标签未对齐