フォーム要素でボタンを使用する場合、現在ではbutton要素が推奨されてます。
理由はそこら中で書いてありますが、CSSで疑似要素が使えたり、デザイン性で柔軟だからです。
ここではJavaScriptによる違いを書きます。
まずは、何もないbutton要素
- <form action="test.html">
- <button>テキスト</button>
- </form>
何も指定しないと、type="submit"と同じ送信になり、formのaction属性と同じになります。
なのでtype="button"にしたい場合は属性を書かなければなりません。
button要素の中のテキストを取得したい場合は、input要素のようにvalueでは取得できません。button要素の文字は、タグで挟まれてるのでtextContentで取得します。
button要素でカウンターを作る例
- <form>
- <button id="btn" type="button">0</button>
- </form>
- <script>
- document.addEventListener('DOMContentLoaded', () => {
- let count = 0;
- var btn = document.getElementById("btn");
- btn.onclick = function() {
- //this.value = ++count; ではありません
- this.textContent(++count);
- };
- });
- </script>
冷静に考えたら分かりますね。
submitで値を送信したい場合は、そのままvalue属性が書けます。