JavaScript - getAttribute () działa tylko dla pierwszego elementu [duplicate]
Dec 11 2020
to jest mój HTML:
<div class="tool-top">
<ul>
<li><a role="button" id="button" value="bold"><i class="fas fa-bold"></i></a></li>
<li><a role="button" id="button" value="italic"><i class="fas fa-italic"></i></a></li>
</ul>
</div>
to jest mój JS:
window.onload = function(){
document.getElementById('button').onclick = function(){
var a = this.getAttribute('value');
console.log(a);
}
}
Staje się „pogrubiony” po kliknięciu pierwszego przycisku, ale nic w drugim
Patrzyłem na tę stronę, ale pisałem za pomocą Jquery.
Odpowiedzi
blex Dec 11 2020 at 00:01
Identyfikator powinien być zawsze niepowtarzalny. Masz tutaj dwa elementy z tym samym identyfikatorem, zamiast tego użyj klasy:
window.onload = function() {
var btns = document.getElementsByClassName('button');
for (var i = 0; i < btns.length; i++) {
btns[i].onclick = function() {
var a = this.getAttribute('value');
console.log(a);
};
}
};
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" />
<div class="tool-top">
<ul>
<li><a role="button" class="button" value="bold"><i class="fas fa-bold"></i></a></li>
<li><a role="button" class="button" value="italic"><i class="fas fa-italic"></i></a></li>
</ul>
</div>
Jeśli masz jQuery (dodałeś tag do swojego pytania) , możesz to zrobić:
window.onload = function() {
$('.button').click(function() {
var a = this.getAttribute('value');
console.log(a);
});
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" />
<div class="tool-top">
<ul>
<li><a role="button" class="button" value="bold"><i class="fas fa-bold"></i></a></li>
<li><a role="button" class="button" value="italic"><i class="fas fa-italic"></i></a></li>
</ul>
</div>