Вы можете пройти через event
для вызова функции inline()
, а затем использовать e.currentTarget
, чтобы получить элемент кнопки, который вызвал событие. Таким образом, вы можете получить его цвет, используя dataset
в качестве цели события.
См. Пример ниже:
const inline = e => {
let btn = e.currentTarget;
let color = btn.dataset.value;
console.log(color);
}
<div>
<h3>inline</h3>
<button class="color" style="background-color: red; color: white;" type="button" onclick="inline(event)" data-value="red">Red</button>
<button class="color" style="background-color: green; color: white;" type="button" onclick="inline(event)" data-value="green">Green</button>
<button class="color" style="background-color: blue; color: white;" type="button" onclick="inline(event)" data-value="blue">Blue</button>
</div>
Кроме того, если вы не хотите использовать event
(из-за его хрупкости), вы можете пройти через this
вместо event
, что будет означать нажатие кнопки следующим образом:
const inline = btn => {
let color = btn.dataset.value;
console.log(color);
}
<div>
<h3>inline</h3>
<button class="color" style="background-color: red; color: white;" type="button" onclick="inline(this)" data-value="red">Red</button>
<button class="color" style="background-color: green; color: white;" type="button" onclick="inline(this)" data-value="green">Green</button>
<button class="color" style="background-color: blue; color: white;" type="button" onclick="inline(this)" data-value="blue">Blue</button>
</div>
Однако часто не очень хорошая идея смешивать HTML и JS, так как вы должны разделить разметку и логику JS. Таким образом, вместо этого вам следует рассмотреть возможность использования прослушивателей событий в вашем коде JS, зацикливаясь на всех элементах кнопки:
document.querySelectorAll(".color").forEach(btn => {
btn.addEventListener("click", function() {
const color = this.dataset.value;
console.log(color);
});
});
<div>
<h3>inline</h3>
<button class="color" style="background-color: red; color: white;" type="button" data-value="red">Red</button>
<button class="color" style="background-color: green; color: white;" type="button" data-value="green">Green</button>
<button class="color" style="background-color: blue; color: white;" type="button" data-value="blue">Blue</button>
</div>