Значение атрибута id
должно быть уникальным для всех элементов.Поскольку всегда должен быть только 1 элемент с идентификатором, метод getElementById
возвращает только один элемент.В этом случае, вероятно, первый элемент в DOM с идентификатором.
Если вы хотите получить несколько элементов из DOM, вам, вероятно, лучше назначить им класс CSS.Чтобы указать, что класс используется для поиска элементов в DOM, люди иногда ставят перед этим классом что-то вроде js-
.Хороший способ получить несколько элементов одновременно - использовать querySelectorAll
.Он будет соответствовать элементам в DOM с помощью селектора CSS.Для вашего случая это будет работать так:
function onShowClickElementClicked(event) {
var showClickElement = event.currentTarget;
event.preventDefault();
console.log('You clicked an element with ID: ', showClickElement.getAttribute("data-id"));
}
window.onload = function () {
var showClickElements = document.querySelectorAll(".js-showClick");
for (var i = 0; i < showClickElements.length; i++) {
showClickElements[i].addEventListener('click', onShowClickElementClicked);
}
}
button {
background-color: transparent;
border: none;
font: inherit;
}
button:hover {
text-decoration: underline;
}
<ul>
<li>
<button class="js-showClick" type="button" data-id="1">dd</button>
</li>
<li>
<button class="js-showClick" type="button" data-id="2">ee</button>
</li>
<li>
<button class="js-showClick" type="button" data-id="3">gg</button>
</li>
<li>
<button class="js-showClick" type="button" data-id="4">xx</button>
</li>
</ul>
Примечание: если вы хотите интерактивный элемент (например, элемент, который будет получать фокус табуляции), но который не должен переходить на другую страницувам почти всегда лучше использовать элемент button
.