簡単な機能でボタンの色を変えられないのですが、色がまったく変わりません。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script language="JavaScript">
function changeColor(){
document.getElementsByTagName('button').style.backgroundColor="green";
}
</script>
</head>
<body >
<form action="/action_page.php" method="get" name="form1">
<input type="text" id="campoDeFlores">
<button type="button" onclick="changeColor()" name="1">1</button>
<button type="button" name="2">2</button>
<button type="button" name="3">3</button>
</form>
</body>
</html>
それが機能しない理由はありますか?
document.getElementsByTagName
は、単一の要素ではなく要素のリストを返します。 Array.from
で配列に変換し、Array.map
でボタンを反復処理する必要があります
function changeColor(){
Array.from(document.querySelectorAll('button')).map(function(button) {
button.style.backgroundColor="green";
})
}
これを試して:
<form action="/action_page.php" method="get" name="form1">
<input type="text" id="campoDeFlores">
<button type="button" onclick="changeColor(this)" name="1">1</button>
<button type="button" name="2">2</button>
<button type="button" name="3">3</button>
</form>
function changeColor(btn) {
btn.style.backgroundColor = "green";
}
getElementsByTagName
を使用していたため、最初はすべてのボタンの色を変更しようとしていると思いましたが、押されたボタンの色を変更したいだけのようです。その場合、配列を使用する必要はありません。クリックされた要素を関数に渡し、特定のボタンの色を変更するだけです。
everybutton
の代わりに、_id="myButton"
_とdocument.getElementById('myButton')
を使用してボタンを具体的に選択することをお勧めします。
次の変更を行います。
changeColor
関数がパラメーターとしてHTMLElementを受け入れることを許可します。changeColor()
に渡します。 button
要素のonclick="changeColor()"
をonclick="changeColor(this)"
に変更しますfunction changeColor (htmlEl) {
htmlEl.style.backgroundColor="green";
}
<form action="/action_page.php" method="get" name="form1">
<input type="text" id="campoDeFlores">
<button type="button" onclick="changeColor(this)" name="1">1</button>
<button type="button" name="2">2</button>
<button type="button" name="3">3</button>
</form>