javascript - 允许多次按下按钮

标签 javascript html css

我正在尝试为一个元素制作一个单词生成器,它的功能类似于 this page每次单击按钮时,单词都会刷新。在我的代码中,它在您第一次按下按钮时起作用,但之后它就不起作用了。

有什么我遗漏的吗,我们将不胜感激!

谢谢 英里

var background1 = document.querySelector(".outer-1");
var background2 = document.querySelector(".outer-2");
var word1 = document.querySelector(".inner-1");
var word2 = document.querySelector(".inner-2");

var button = document.querySelector(".button")

colour();

function colour() {
  button.addEventListener("click", function() {
    word1.textContent = randomWordLeft;
    word2.textContent = randomWordRight;
    word1.setAttribute("style", "color: yellow");
    word2.setAttribute("style", "color: green");
    background1.setAttribute("style", "background-color: green");
    background2.setAttribute("style", "background-color: yellow");
  })

}

var leftArr = [

  "WHISKEY",
  "GIN",
  "VODKA",
  "APEROL",
  "CAMPARI",
  "LAGER",
  "ALE",
  "WINE",
  "MEZCAL",
  "TEQUILA",
  "PIZZA",
  "FRIED CHICKEN",
  "TOAST",
  "ICE CREAM",
  "CHIPS",
  "STEAK",
  "SALMON",
  "CAVIAR",
  "SUSHI",
  "PEANUT BUTTER",
  "MAYONAISE",
  "KETCHUP",
  "MARMITE"
];

var rightArr = [

  "MUSTARD",
  "SOYA SAUCE",
  "WASABI",
  "SEAWEED",
  "TURMERIC",
  "VOLCANIC ASH",
  "WATER LILY SEEDS",
  "SCOTCH BONNET",
  "BIRDS EYE CHILLI",
  "HIMALAYAN PINK SALT",
  "CHARCOAL",
  "KOMBUCHA",
  "MATCHA TEA",
  "COLA",
  "MOON MILK",
  "MILKSHAKE",
  "MORINGA",
  "DRAGON FRUIT",
  "JACK FRUIT",
  "GUAVA",
  "DURIAN",
  "LYCHEE",
  "BLUE JAVA"

];


var randomWordLeft = leftArr[Math.floor(Math.random() * leftArr.length)];

var randomWordRight = rightArr[Math.floor(Math.random() * rightArr.length)];
<!DOCTYPE html>
<html>

<head>
  <title>Gen2</title>
  <link href="https://fonts.googleapis.com/css?family=Lato:900&display=swap" rel="stylesheet">
  <link rel="stylesheet" type="text/css" href="style2.css">
</head>

<body>
  <div class="title">
    <div class="header-1">Mash Made </div>
    <div class="header-2">in heaven</div>
  </div>
  <div class="outer-1">
    <div class="inner-1">Toast</div>
  </div>
  <div class="outer-2">
    <div class="inner-2">Gin</div>
  </div>
  <button class="button">Mash!</button>
  <script type="text/javascript" src="script.js"></script>
</body>

</html>

最佳答案

  • 将随机逻辑移动到您的colour 函数中。别等了,改用 randomText 吧!
  • 从函数中删除点击处理程序
  • 将函数名称传递给点击处理程序 button.addEventListener('click', randomText)
  • 初始化randomText()
  • 使用 style.cssText = 'cssString' 轻松设置样式(或者更确切地说使用 CSS 样式)

var w1 = ["WHISKEY", "GIN", "VODKA", "APEROL", "CAMPARI", "LAGER", "ALE", "WINE", "MEZCAL", "TEQUILA", "PIZZA", "FRIED CHICKEN", "TOAST", "ICE CREAM", "CHIPS", "STEAK", "SALMON", "CAVIAR", "SUSHI", "PEANUT BUTTER", "MAYONAISE", "KETCHUP", "MARMI"];
var w2 = ["MUSTARD", "SOYA SAUCE", "WASABI", "SEAWEED", "TURMERIC", "VOLCANIC ASH", "WATER LILY SEEDS", "SCOTCH BONNET", "BIRDS EYE CHILLI", "HIMALAYAN PINK SALT", "CHARCOAL", "KOMBUCHA", "MATCHA TEA", "COLA", "MOON MILK", "MILKSHAKE", "MORINGA", "DRAGON FRUIT", "JACK FRUIT", "GUAVA", "DURIAN", "LYCHEE", "BLUE JAVA"];

var randArr = arr => arr[~~(Math.random() * arr.length)];
var word1 = document.querySelector(".inner-1");
var word2 = document.querySelector(".inner-2");
var button = document.querySelector(".button")

word1.style.cssText = 'color: yellow; background: green;'; // Is JS really needed?
word2.style.cssText = 'color: green; background: yellow;';

function randomText() {
  word1.textContent = randArr(w1);
  word2.textContent = randArr(w2);
}

button.addEventListener("click", randomText); // On click
randomText(); // and on init
<div class="title">
  <div class="header-1">Mash Made </div>
  <div class="header-2">in heaven</div>
</div>
<div class="outer-1">
  <div class="inner-1">Toast</div>
</div>
<div class="outer-2">
  <div class="inner-2">Gin</div>
</div>
<button class="button">Mash!</button>

关于javascript - 允许多次按下按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57587608/

相关文章:

javascript - 是否可以不提及grunt中的所有脚本文件路径?

javascript - 直接在 Chromium 中编辑纯 JavaScript 扩展

Javascript for 循环在结束之前停止

javascript - 获取列表项的值给我 0

html - 使用@font-face 呈现 Gill Sans 字体系列

javascript - 响应 jquery 改变宽度

html - 获取 <p> 元素来裁剪文本

html - 在 <ul> 列表的右侧添加额外的文本

css - H2 在源代码中出现在 h1 之前,可以吗?

html - 显示未在客户端定义的字体,仅在服务器上定义