• Skip to main content
  • Skip to search
  • Skip to select language
MDN Web Docs
  • References
    • Overview / Web Technology

      Web technology reference for developers

    • HTML

      Structure of content on the web

    • CSS

      Code used to describe document style

    • JavaScript

      General-purpose scripting language

    • HTTP

      Protocol for transmitting web resources

    • Web APIs

      Interfaces for building web applications

    • Web Extensions

      Developing extensions for web browsers

    • Accessibility

      Build web projects usable for all

    • Web Technology

      Web technology reference for developers

  • Learn
    • Overview / MDN Learning Area

      Learn web development

    • MDN Learning Area

      Learn web development

    • HTML

      Learn to structure web content with HTML

    • CSS

      Learn to style content using CSS

    • JavaScript

      Learn to run scripts in the browser

    • Accessibility

      Learn to make the web accessible to all

  • Plus
    • Overview

      A customized MDN experience

    • AI Help

      Get real-time assistance and support

    • Updates

      All browser compatibility updates at a glance

    • Documentation

      Learn how to use MDN Plus

    • FAQ

      Frequently asked questions about MDN Plus

  • Curriculum New
  • Blog
    • Playground

      Write, test and share your code

    • HTTP Observatory

      Scan a website for free

    • AI Help

      Get real-time assistance and support

  • Log in
  • Sign up for free
  1. 開発者向けのウェブ技術
  2. HTML
  3. リファレンス
  4. 要素
    • English (US)
    • Deutsch
    • Español
    • Français
    • 한국어
    • Português (do Brasil)
    • Русский
    • 中文 (简体)

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

この記事では

  • 試してみましょう
  • 値
  • ボタンの使用
  • 検証
  • 例
  • 技術的概要
  • 仕様書
  • ブラウザーの互換性
  • 関連情報
  1. HTML
  2. ガイド
  3. コンテンツカテゴリー
  4. コメント
  5. 日付と時刻の形式
  6. 制約検証
  7. ビューポートの meta 要素
  8. レスポンシブ画像
  9. マイクロデータ
  10. マイクロフォーマット
  11. 後方互換モードと標準モード
  12. HTML 早見表
  13. 手引
  14. HTML で用語を定義する
  15. データ属性の使用
  16. 別オリジンの画像の利用
  17. 画像の上にヒットマップを追加する
  18. 読み込みが速い HTML ページを作成する
  19. JavaScript の追加
  20. リファレンス
  21. 要素
    1. 非推奨;
    2. 非推奨;

    3. 非推奨;
    4. 非推奨;
    5. Experimental
    6. 非推奨;
    7. 非推奨;
    8. 非推奨;

value なしのボタン

value を指定しなかった場合は、無印のボタンになります。

html

ボタンの使用

要素には既定の動作がありません(親戚である や は、それぞれフォームの送信とリセットに使用されます)。ボタンに何かをさせる場合は、処理を行うための JavaScript コードを書く必要があります。

基本的なボタン

基本的なボタンに click イベントハンドラーを設定し、マシンを起動させましょう(つまり、ボタンの value と続く段落の文字列コンテンツを切り替えます)。

html

  

マシンが停止しています。

js
const button = document.querySelector("input");
const paragraph = document.querySelector("p");

button.addEventListener("click", updateButton);

function updateButton() {
  if (button.value === "マシンを起動") {
    button.value = "マシンを停止";
    paragraph.textContent = "マシンが起動しています!";
  } else {
    button.value = "マシンを起動";
    paragraph.textContent = "マシンが停止しています。";
  }
}

このスクリプトは DOM で を表す HTMLInputElement オブジェクトの参照を受け取り、この参照を変数 button に保存します。addEventListener() は、ボタンに click イベントが発生したときに実行される関数を設定します。

ボタンへのショートカットキーの追加

ショートカットキーは、アクセスキーやキーボードショートカットとも呼ばれますが、ユーザーがキーボード上のキーまたはキーの組み合わせを使用してボタンを操作できるものです。ボタンにショートカットキーを追加するには、どの でも同じですが、 accesskey グローバル属性を使用します。

この例では、 s がアクセスキーとして指定されています (ブラウザーと OS の組み合わせによっては、 s と特定の修飾キーの組み合わせが必要です。その一覧については accesskey を参照してください)。

html

マシンが停止しています。

const button = document.querySelector("input");
const paragraph = document.querySelector("p");

button.addEventListener("click", updateButton);

function updateButton() {
  if (button.value === "マシンを起動") {
    button.value = "マシンを停止";
    paragraph.textContent = "マシンが起動しています!";
  } else {
    button.value = "マシンを起動";
    paragraph.textContent = "マシンが停止しています。";
  }
}

メモ: 上記の例では、ユーザーがアクセスキーが何であるかを知ることができないという問題があります。実際のサイトでは、この情報を、サイトのデザインに干渉しない方法で提供する必要があります (たとえば、簡単にアクセスできるリンクを設置して、サイトのアクセスキーに関する情報を指すなど)。

ボタンの無効化と有効化

ボタンを無効にするには、次のように disabled グローバル属性を指定するだけです。

html

disabled 属性の設定

実行時に disabled に true または false を設定するだけで、ボタンを有効化したり無効化したりすることができます。この例では、ボタンは有効の状態で始まりますが、押すと button.disabled = true を使用して無効化されます。それから setTimeout() 関数を使用して、2 秒後にボタンの状態を有効の状態にリセットしています。

html

js
const button = document.querySelector("input");

button.addEventListener("click", disableButton);

function disableButton() {
  button.disabled = true;
  button.value = "Disabled";
  setTimeout(() => {
    button.disabled = false;
    button.value = "Enabled";
  }, 2000);
}

disabled 状態の継承

disabled 属性が指定されなかった場合、ボタンは disabled の状態を親要素から継承します。これによって、複数の要素を

要素のようなコンテナーの中に入れ、コンテナーに disabled を設定することで、一括で有効化したり無効化したりすることができます。

以下の例はこの操作を表しています。これは一つ前の例ととても似ていますが、最初のボタンが押されたときに disabled 属性が

に設定され、2 秒経過するまで 3 つのボタンがすべて無効になります。

html
Button group
js
const button = document.querySelector("input");
const fieldset = document.querySelector("fieldset");

button.addEventListener("click", disableButton);

function disableButton() {
  fieldset.disabled = true;
  setTimeout(() => {
    fieldset.disabled = false;
  }, 2000);
}

メモ: Firefox は他のブラウザーと異なり、ページが再読み込みされた後でも 要素の disabled 状態を維持します。回避するには、 要素の autocomplete 属性を off に設定します。(詳しくは Firefox バグ 654072 を参照してください。)

検証

ボタンに対して制約検証は行われません。制約すべき値はありません。

例

以下の例では、 要素といくらかの CSS と JavaScript を使用して作成した、とても基本的なお絵かきアプリを紹介します。 (簡略化のため CSS を省略します)。上部の 2 つのコントロールで、色と描画するペンの大きさを選択できます。ボタンは、クリックすると、キャンバスを消去する関数を呼び出します。

html
30

Add suitable fallback here.

body {
  background: #ccc;
  margin: 0;
  overflow: hidden;
}

.toolbar {
  background: #ccc;
  width: 150px;
  height: 75px;
  padding: 5px;
}

input[type="color"],
input[type="button"] {
  width: 90%;
  margin: 0 auto;
  display: block;
}

input[type="range"] {
  width: 70%;
}

span {
  position: relative;
  bottom: 5px;
}
js
const canvas = document.querySelector(".myCanvas");
const width = (canvas.width = window.innerWidth);
const height = (canvas.height = window.innerHeight - 85);
const ctx = canvas.getContext("2d");

ctx.fillStyle = "rgb(0 0 0)";
ctx.fillRect(0, 0, width, height);

const colorPicker = document.querySelector('input[type="color"]');
const sizePicker = document.querySelector('input[type="range"]');
const output = document.querySelector(".output");
const clearBtn = document.querySelector('input[type="button"]');

// 角度をラジアンに変換する
function degToRad(degrees) {
  return (degrees * Math.PI) / 180;
}

// 選択した大きさの値を反映

sizePicker.oninput = () => {
  output.textContent = sizePicker.value;
};

// マウスポインターと、ボタンが押されているかどうかを格納
let curX;
let curY;
let pressed = false;

// マウスポインターの座標を更新
document.onmousemove = (e) => {
  curX = e.pageX;
  curY = e.pageY;
};

canvas.onmousedown = () => {
  pressed = true;
};

canvas.onmouseup = () => {
  pressed = false;
};

clearBtn.onclick = () => {
  ctx.fillStyle = "rgb(0 0 0)";
  ctx.fillRect(0, 0, width, height);
};

function draw() {
  if (pressed) {
    ctx.fillStyle = colorPicker.value;
    ctx.beginPath();
    ctx.arc(
      curX,
      curY - 85,
      sizePicker.value,
      degToRad(0),
      degToRad(360),
      false,
    );
    ctx.fill();
  }

  requestAnimationFrame(draw);
}

draw();

技術的概要

値 ボタンのラベルとして使われる文字列
イベント click
対応している共通属性 type および value
IDL 属性 value
DOM インターフェイス HTMLInputElement
メソッド なし
暗黙の ARIA ロール button

仕様書

Specification
HTML
# button-state-(type=button)

ブラウザーの互換性

関連情報

  • およびそれに実装されている HTMLInputElement インターフェイス。
  • より新しい

Help improve MDN

Learn how to contribute.

This page was last modified on 2025年4月20日 by MDN contributors.

View this page on GitHub • Report a problem with this content
MDN logo

Your blueprint for a better internet.

  • MDN on Bluesky
  • MDN on Mastodon
  • MDN on X (formerly Twitter)
  • MDN on GitHub
  • MDN Blog RSS Feed

MDN

  • About
  • Blog
  • Careers
  • Advertise with us

Support

  • Product help
  • Report an issue

Our communities

  • MDN Community
  • MDN Forum
  • MDN Chat

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2025 by individual mozilla.org contributors. Content available under a Creative Commons license.