メインコンテンツへスキップ

datalist要素


1.仕様

DATALIST要素は、
他のコントロールの
事前定義されたオプションを
表します。

datalist

データリスト (data list)

種類

通常要素

コンテンツモデル
(%Phrasing)*|(optionと、0個以上の

(%Phrasing)*|(optionと、0個以上のが配置できます。

に分類される要素は、 です。

タグの省略

どちらのタグも省略できません。

コンテンツ属性

グローバル属性のみ

DOM インターフェイス
HTMLDataListElement
  1. [Exposed=Window]
  2. interface HTMLDataListElement : HTMLElement {
  3. [HTMLConstructor] constructor();
  4.  
  5. [SameObject] readonly attribute HTMLCollection options;
  6. };
HTMLElement
  1. [Exposed=Window]
  2. interface HTMLElement : Element {
  3. [HTMLConstructor] constructor();
  4.  
  5. // metadata attributes
  6. [CEReactions] attribute DOMString title;
  7. [CEReactions] attribute DOMString lang;
  8. [CEReactions] attribute boolean translate;
  9. [CEReactions] attribute DOMString dir;
  10.  
  11. // user interaction
  12. [CEReactions] attribute (boolean or unrestricted double or DOMString)? hidden;
  13. [CEReactions] attribute DOMString inert;
  14. undefined click();
  15. [CEReactions] attribute DOMString accessKey;
  16. readonly attribute DOMString accessKeyLabel;
  17. [CEReactions] attribute boolean draggable;
  18. [CEReactions] attribute boolean spellcheck;
  19. [CEReactions] attribute DOMString writingSuggestions;
  20. [CEReactions] attribute DOMString autocapitalize;
  21.  
  22. [CEReactions] attribute [LegacyNullToEmptyString] DOMString innerText;
  23. [CEReactions] attribute [LegacyNullToEmptyString] DOMString outerText;
  24.  
  25. ElementInternals attachInternals();
  26.  
  27. // The popover API
  28. undefined showPopover();
  29. undefined hidePopover();
  30. boolean togglePopover(optional boolean force);
  31. [CEReactions] attribute DOMString? popover;
  32. };
  33.  
  34. HTMLElement includes GlobalEventHandlers;
  35. HTMLElement includes ElementContentEditable;
  36. HTMLElement includes HTMLOrSVGElement;
Element
  1. [Exposed=Window]
  2. interface Element : Node {
  3. readonly attribute DOMString? namespaceURI;
  4. readonly attribute DOMString? prefix;
  5. readonly attribute DOMString localName;
  6. readonly attribute DOMString tagName;
  7.  
  8. [CEReactions] attribute DOMString id;
  9. [CEReactions] attribute DOMString className;
  10. [SameObject, PutForwards=value] readonly attribute DOMTokenList classList;
  11. [CEReactions, Unscopable] attribute DOMString slot;
  12.  
  13. boolean hasAttributes();
  14. [SameObject] readonly attribute NamedNodeMap attributes;
  15. sequence<DOMString> getAttributeNames();
  16. DOMString? getAttribute(DOMString qualifiedName);
  17. DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
  18. [CEReactions] undefined setAttribute(DOMString qualifiedName, DOMString value);
  19. [CEReactions] undefined setAttributeNS(DOMString? namespace, DOMString qualifiedName, DOMString value);
  20. [CEReactions] undefined removeAttribute(DOMString qualifiedName);
  21. [CEReactions] undefined removeAttributeNS(DOMString? namespace, DOMString localName);
  22. [CEReactions] boolean toggleAttribute(DOMString qualifiedName, optional boolean force);
  23. boolean hasAttribute(DOMString qualifiedName);
  24. boolean hasAttributeNS(DOMString? namespace, DOMString localName);
  25.  
  26. Attr? getAttributeNode(DOMString qualifiedName);
  27. Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
  28. [CEReactions] Attr? setAttributeNode(Attr attr);
  29. [CEReactions] Attr? setAttributeNodeNS(Attr attr);
  30. [CEReactions] Attr removeAttributeNode(Attr attr);
  31.  
  32. ShadowRoot attachShadow(ShadowRootInit init);
  33. readonly attribute ShadowRoot? shadowRoot;
  34.  
  35. Element? closest(DOMString selectors);
  36. boolean matches(DOMString selectors);
  37. boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches
  38.  
  39. HTMLCollection getElementsByTagName(DOMString qualifiedName);
  40. HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
  41. HTMLCollection getElementsByClassName(DOMString classNames);
  42.  
  43. [CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy
  44. undefined insertAdjacentText(DOMString where, DOMString data); // legacy
  45. };
GlobalEventHandlers
  1. interface mixin GlobalEventHandlers {
  2. attribute EventHandler onabort;
  3. attribute EventHandler onauxclick;
  4. attribute EventHandler onbeforeinput;
  5. attribute EventHandler onbeforematch;
  6. attribute EventHandler onbeforetoggle;
  7. attribute EventHandler onblur;
  8. attribute EventHandler oncancel;
  9. attribute EventHandler oncanplay;
  10. attribute EventHandler oncanplaythrough;
  11. attribute EventHandler onchange;
  12. attribute EventHandler onclick;
  13. attribute EventHandler onclose;
  14. attribute EventHandler oncontextlost;
  15. attribute EventHandler oncontextmenu;
  16. attribute EventHandler oncontextrestored;
  17. attribute EventHandler oncopy;
  18. attribute EventHandler oncuechange;
  19. attribute EventHandler oncut;
  20. attribute EventHandler ondblclick;
  21. attribute EventHandler ondrag;
  22. attribute EventHandler ondragend;
  23. attribute EventHandler ondragenter;
  24. attribute EventHandler ondragleave;
  25. attribute EventHandler ondragover;
  26. attribute EventHandler ondragstart;
  27. attribute EventHandler ondrop;
  28. attribute EventHandler ondurationchange;
  29. attribute EventHandler onemptied;
  30. attribute EventHandler onended;
  31. attribute OnErrorEventHandler onerror;
  32. attribute EventHandler onfocus;
  33. attribute EventHandler onformdata;
  34. attribute EventHandler oninput;
  35. attribute EventHandler oninvalid;
  36. attribute EventHandler onkeydown;
  37. attribute EventHandler onkeypress;
  38. attribute EventHandler onkeyup;
  39. attribute EventHandler onload;
  40. attribute EventHandler onloadeddata;
  41. attribute EventHandler onloadedmetadata;
  42. attribute EventHandler onloadstart;
  43. attribute EventHandler onmousedown;
  44. [LegacyLenientThis] attribute EventHandler onmouseenter;
  45. [LegacyLenientThis] attribute EventHandler onmouseleave;
  46. attribute EventHandler onmousemove;
  47. attribute EventHandler onmouseout;
  48. attribute EventHandler onmouseover;
  49. attribute EventHandler onmouseup;
  50. attribute EventHandler onpaste;
  51. attribute EventHandler onpause;
  52. attribute EventHandler onplay;
  53. attribute EventHandler onplaying;
  54. attribute EventHandler onprogress;
  55. attribute EventHandler onratechange;
  56. attribute EventHandler onreset;
  57. attribute EventHandler onresize;
  58. attribute EventHandler onscroll;
  59. attribute EventHandler onscrollend;
  60. attribute EventHandler onsecuritypolicyviolation;
  61. attribute EventHandler onseeked;
  62. attribute EventHandler onseeking;
  63. attribute EventHandler onselect;
  64. attribute EventHandler onslotchange;
  65. attribute EventHandler onstalled;
  66. attribute EventHandler onsubmit;
  67. attribute EventHandler onsuspend;
  68. attribute EventHandler ontimeupdate;
  69. attribute EventHandler ontoggle;
  70. attribute EventHandler onvolumechange;
  71. attribute EventHandler onwaiting;
  72. attribute EventHandler onwebkitanimationend;
  73. attribute EventHandler onwebkitanimationiteration;
  74. attribute EventHandler onwebkitanimationstart;
  75. attribute EventHandler onwebkittransitionend;
  76. attribute EventHandler onwheel;
  77. };
ElementContentEditable
  1. interface mixin ElementContentEditable {
  2. [CEReactions] attribute DOMString contentEditable;
  3. [CEReactions] attribute DOMString enterKeyHint;
  4. readonly attribute boolean isContentEditable;
  5. [CEReactions] attribute DOMString inputMode;
  6. };
HTMLOrSVGElement
  1. interface mixin HTMLOrSVGElement {
  2. [SameObject] readonly attribute DOMStringMap dataset;
  3. attribute DOMString nonce; // intentionally no [CEReactions]
  4.  
  5. [CEReactions] attribute boolean autofocus;
  6. [CEReactions] attribute long tabIndex;
  7. undefined focus(optional FocusOptions options = {});
  8. undefined blur();
  9. };
ARIA in HTML
暗黙的="listbox" ARIAロール="No" aria-* 属性="No"

暗黙的な ARIAセマンティクスは、role=listbox です。

作成者は、暗黙的な ARIAセマンティクス, または HTML要素のネイティブセマンティクスを上書きしてはいけません。

記述できる aria-* 属性はありません。

レンダリング
ボックスを生成しない
非表示の要素
  1. datalist {
  2. display: none;
  3. }

CSS を大雑把に読むと、 要素とその子孫はボックスやテキストシーケンスを生成しません。 などになります。

説明
datalist要素は、他のコントロールの事前定義されたオプションを表す option要素のセットを表します。 レンダリングでは、datalist要素は何も表さないため、その子とともに非表示にする必要があります。
  1. <!DOCTYPE html>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>datalist要素の例 - (Example of datalist element) | 離珠のHTMLでしぃ!</title>
  6. </head>
  7. <body>
  8. <h1>datalist要素の例</h1>
  9. <form action="../Html/fmreceive.htm">
  10. <datalist id="idaDatalist">
  11. <option>ABC123</option>
  12. <option>DEF456</option>
  13. </datalist>
  14. <input name="nipInput" list="idaDatalist">
  15. <button name="nbtSender" value="../Html/exdatalist.htm">ボタン</button>
  16. <br>受信用の<br>ページへ
  17. </form>
  18. </body>
  19. </html>

このサンプルへのリンクです。
(./exdatalist.htm)

JSONデータ
JSON形式での、データのイメージです。
  1. {
  2. "datalist": {
  3. "check": "2024-09-01",
  4. "group": "Form",
  5. "element": "- - ((%Phrasing)*|(option&(%Script))*) -- data list. (Normal elements.) [Flow|Phrasing] --",
  6. "attlist": {"%Global;": ""},
  7. "comment": "データリスト (data list)",
  8. "point": "他のコントロールの事前定義されたオプションを表す option要素のセットを表します。 レンダリングでは、datalist要素は何も表さないため、その子とともに非表示にする必要があります。",
  9. "kind": "Normal",
  10. "categories": [
  11. "Flow",
  12. "Phrasing",
  13. ],
  14. "used": "parent (%Phrasing)*",
  15. "contentmodel": "datalist ((%Phrasing)*|(option&(%Script))*)",
  16. "tag": [
  17. "-",
  18. "-",
  19. ],
  20. "attributes": "Global",
  21. "dominterface": "HTMLDataListElement",
  22. "rendering": "Hidden",
  23. "reference": [
  24. {
  25. "title": "HTML Living Standard. 4.10.8 The datalist element.",
  26. "href": "https://html.spec.whatwg.org/multipage/form-elements.html#the-datalist-element",
  27. "heading": "HTML Living Standard. 4.10.8 The datalist element",
  28. "sub": "Last Updated 27 August 2024",
  29. },
  30. {
  31. "title": "HTML Living Standard. 15 Rendering 15.3.1 Hidden elements.",
  32. "href": "https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements",
  33. "heading": "HTML Living Standard. 15 Rendering 15.3.1 Hidden elements",
  34. "sub": "Last Updated 27 August 2024",
  35. },
  36. {
  37. "title": "HTML 5.2 W3C Recommendation. 4.10.8. The datalist element. W3C Recommendation, 14 December 2017.",
  38. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/sec-forms.html#the-datalist-element",
  39. "heading": "HTML 5.2 W3C 勧告. 4.10.8. The datalist element",
  40. "sub": "W3C勧告、2017年12月14日",
  41. },
  42. {
  43. "title": "HTML 5.2 W3C Recommendation. 10.3.1. Hidden elements.",
  44. "href": "https://www.w3.org/TR/2017/REC-html52-20171214/rendering.html#hidden-elements",
  45. "heading": "HTML 5.2 W3C 勧告. 10.3.1. Hidden elements.",
  46. "sub": "W3C勧告、2017年12月14日",
  47. },
  48. {
  49. "title": "HTML 5.1 W3C Recommendation. 4.10.8. The datalist element. W3C Recommendation, 1 November 2016.",
  50. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/sec-forms.html#the-datalist-element",
  51. "heading": "HTML 5.1 W3C 勧告. 4.10.8. The datalist element",
  52. "sub": "W3C勧告、2016年11月1日",
  53. },
  54. {
  55. "title": "HTML 5.1 W3C Recommendation. 10.3.1. Hidden elements. W3C Recommendation, 1 November 2016.",
  56. "href": "https://www.w3.org/TR/2016/REC-html51-20161101/rendering.html#hidden-elements",
  57. "heading": "HTML 5.1 W3C 勧告. 10.3.1. Hidden elements.",
  58. "sub": "W3C勧告、2016年11月1日",
  59. },
  60. {
  61. "title": "HTML 5 W3C Recommendation. 4.10.8 The datalist element. W3C Recommendation, 28 October 2014.",
  62. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-datalist-element",
  63. "heading": "HTML 5 W3C 勧告. 4.10.8 The datalist element",
  64. "sub": "W3C勧告、2014年10月28日",
  65. },
  66. {
  67. "title": "HTML 5 W3C Recommendation. 10.3.1 Hidden elements. W3C Recommendation, 28 October 2014.",
  68. "href": "https://www.w3.org/TR/2014/REC-html5-20141028/rendering.html#hidden-elements",
  69. "heading": "HTML 5 W3C 勧告. 10.3.1 Hidden elements.",
  70. "sub": "W3C勧告、2014年10月28日",
  71. },
  72. {
  73. "title": "MDN Web Docs. HTML <datalist>: The HTML Data List element.",
  74. "href": "https://developer.mozilla.org/ja/docs/Web/HTML/Element/datalist",
  75. "heading": "<datalist>: HTML データリスト要素 - HTML: ハイパーテキストマークアップ言語 | MDN",
  76. },
  77. ],
  78. "version": {
  79. "first": "HTML5",
  80. "latest": "HTML Living Standard",
  81. },
  82. }
  83. }

注意: 簡易に描画する為に、各項目の後ろに , を付与しています。JSON の形式では、末尾の項目の後には , は付けません。

最終確認日

2024-09-01


2.使用可能な箇所

フレージングコンテンツ
受け入れる要素に
配置できます。

datalist要素を使用できる状態(コンテキストContext)は、フレージングコンテンツを受け入れる要素に配置できます。

フレージングコンテンツを受け入れる要素は、h1要素, h2要素, h3要素, h4要素, h5要素, h6要素, p要素, pre要素, output要素, progress要素, meter要素, label要素, datalist要素, body要素, section要素, nav要素, aside要素, article要素, header要素, footer要素, main要素, address要素, li要素, dt要素, dd要素, caption要素, th要素, td要素, form要素, fieldset要素, search要素, blockquote要素, figure要素, figcaption要素, div要素, dialog要素, abbr要素, b要素, bdi要素, bdo要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, u要素, var要素 です。

尚 厳密に言うと、コンテンツモデルフレージングコンテンツ, フローコンテンツのいずれかである要素に配置できます。少なくとも現在は、カテゴリフレージングコンテンツである要素はフローコンテンツでもあります。なので、コンテンツモデルフローコンテンツである要素にはカテゴリフレージングコンテンツである要素も配置できるのが現状です。


3.配置できるコンテンツ

フレージングコンテンツ 又は、
0 個以上のoptionおよび
スクリプトサポート要素を
配置できます。

datalist要素(内容コンテンツContent)として、0 以上のフレージングコンテンツを配置できます。又は、option要素 および scriptコンテンツを配置できます。

フレージングコンテンツである要素は、script要素, noscript要素, template要素, input要素, textarea要素, select要素, label要素, button要素, output要素, progress要素, meter要素, datalist要素, picture要素, object要素, img要素, iframe要素, embed要素, video要素, audio要素, canvas要素, map要素, area要素, a要素, ins要素, del要素, abbr要素, b要素, bdi要素, bdo要素, br要素, cite要素, code要素, data要素, dfn要素, em要素, i要素, kbd要素, mark要素, q要素, ruby要素, s要素, samp要素, small要素, span要素, strong要素, sub要素, sup要素, time要素, u要素, var要素, wbr要素, slot要素, text 条件付きで、mata要素, link要素 です。

scriptコンテンツである要素は、script要素, template要素 です。

尚 このコンテンツは、他のコントロールの定義済みオプションを提案するもので、それ自身(子孫を含めて)は非表示です。 最も単純なケースでは、datalist要素にはoption要素の子要素のみが含まれます。 より複雑なケースでは、datalist要素に、データリストをサポートしていない下位レベルのクライアントに表示されるコンテンツを指定できます。


4.属性

グローバル属性のみ、
設定できます。

datalist要素は、グローバル属性のみ 設定できます。


5.Web API

id属性を用いて
getElementById()メソッドで
要素を取得する方法がお勧めです。

datalist要素を表すプロパティはないので、idを用いて documentgetElementById()メソッドで、要素を取得する方法がお勧めです。この時に取得できるのはHTMLDataListElement オブジェクトです。


6.レンダリング

  1. datalist {
  2. display: none;
  3. }

datalistは、ビジュアルメディアではボックステキストシーケンスを生成せず、レイアウトに影響を与えません。子孫要素もボックステキストシーケンスを生成しません。 他のコントロールの定義済みオプションを表すoption要素のセットを表す為の要素です。


7.気を付ける点

サポート

datalistをサポートしていない場合を考慮した記述は、必要かもしれませんがバランスが難しいです。 場合によっては、そもそもdatalistを使わないでも良いのではという事にもなりますし、その辺が難しいです。


8.付記