在 Javascript 中,如何编写一个函数来影响多个按钮,每个按钮都有自己单独的数组? [英] In Javascript, how do I write one function that will effect multiple buttons, each with their own separate arrays?
问题描述
我目前正在设置一个具有三个独立按钮的应用程序,每个按钮都应该从特定于该按钮的数组中随机选择一个元素.我已经成功地为每个按钮编写了具有单独功能的代码,但我想知道是否有办法将其压缩为可以应用于所有三个按钮的单个功能.
这是我当前的 Javascript:
const greyButton = document.querySelector('#grey');greyButton.addEventListener('click', () => {让灰色 = ['Statblocks/Grey/badger.png', 'Statblocks/Grey/giantrat.png', 'Statblocks/Grey/badger.png', 'Statblocks/Grey/boar.png', 'Statblocks/Grey/panther.png', 'Statblocks/Grey/gitant badger.png', 'Statblocks/Grey/dire wolf.png', 'Statblocks/Grey/giant elk.png']for (i=0;i {让 rust = ['Statblocks/Rust/rat.png', 'Statblocks/Rust/owl.png', 'Statblocks/Rust/mastiff.png', 'Statblocks/Rust/goat.png', 'Statblocks/Rust/giantgoat.png', 'Statblocks/Rust/giant boar.png', 'Statblocks/Rust/lion.png', 'Statblocks/Rust/brown bear.png']for (i=0;i {let tan = ['Statblocks/Tan/jackal.png', 'Statblocks/Tan/ape.png', 'Statblocks/Tan/baboon.png', 'Statblocks/Tan/axe beak.png', 'Statblocks/Tan/black bear.png', 'Statblocks/Tan/giant weasel.png', 'Statblocks/Tan/giant hyena.png', 'Statblocks/Tan/tiger.png']对于 (i=0;i
以及连接的 HTML:
<div class="column"><h1>灰色的诡计袋</h1><button class="button";id='grey'>从包中绘制</button><img src=""alt="id=灰球"><div class="column"><h1>Rust Bag of Tricks</h1><button class="button";id='rust'>从包中绘制</button><img src=""alt="id="rustBall">
<div class="column"><h1>Tan Bag of Tricks</h1><button class="button";id='tan'>从包中抽取</button>
var urlsByColor = {灰色:['Statblocks/Grey/badger.png'、'Statblocks/Grey/giantrat.png'、'Statblocks/Grey/badger.png'、'Statblocks/Grey/boar.png'、'Statblocks/Grey/panther.png', 'Statblocks/Grey/gitant badger.png', 'Statblocks/Grey/dire wolf.png', 'Statblocks/Grey/giant elk.png'],Rust: ['Statblocks/Rust/rat.png', 'Statblocks/Rust/owl.png', 'Statblocks/Rust/mastiff.png', 'Statblocks/Rust/goat.png', 'Statblocks/Rust/giant goat.png', 'Statblocks/Rust/giant boar.png', 'Statblocks/Rust/lion.png', 'Statblocks/Rust/brown bear.png'],tan: ['Statblocks/Tan/jackal.png', 'Statblocks/Tan/ape.png', 'Statblocks/Tan/baboon.png', 'Statblocks/Tan/axe beak.png', 'Statblocks/Tan/blackBear.png', 'Statblocks/Tan/giant weasel.png', 'Statblocks/Tan/giant hyena.png', 'Statblocks/Tan/tiger.png']};函数 changeBall (e) {const urls = urlsByColor[e.target.id];const randomIndex = Math.floor(Math.random() * urls.length);const randomUrl = urls[randomIndex];const associatedBall = e.target.closest('.column').querySelector('.ball');console.log(`将 ${e.target.id} 更改为 ${randomUrl}`);关联球.src = randomUrl;控制台日志(相关球);}[...document.querySelectorAll('.color.button')].forEach(button =>button.addEventListener('click', changeBall));
<div class="column"><h1>灰色的诡计袋</h1><button class="button color" id='grey'>从包中绘制</button><img src="" alt="" class="ball" id="greyBall"><div class="column"><h1>Rust Bag of Tricks</h1><button class="button color" id='rust'>从包中绘制</button><img src="" alt="" class="ball" id="rustBall">
<div class="column"><h1>Tan Bag of Tricks</h1><button class="button color" id='tan'>从包里画</button><img src="" alt="" class="ball" id="tanBall">