次のようなカスタム属性をHTMLタグに追加できますか?
<tag myAttri="myVal" />
要素にカスタム属性を自由に追加できます。しかし、それはあなたの文書を無効にします。
HTML 5では、接頭辞が。のカスタムデータ属性data-
を使用する機会があります。
!DOCTYPE宣言(つまり、DTD)を修正して、[XML]ドキュメントが引き続き有効になるようにすることができます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
[
<!ATTLIST tag myAttri CDATA #IMPLIED>
]>
#IMPLIED
これはオプションの属性であることを意味します。または#REQUIRED
、などを使用できます。
詳細については、DTD-属性を参照してください。
いいえ、これにより検証が失敗します。
HTML 5では、カスタム属性を追加できます/追加できるようになります。このようなもの:
<tag data-myAttri="myVal" />
jQuerydata()
関数を使用すると、任意のデータをDOM要素に関連付けることができます。これが例です。
HTML5の場合:はい:data-属性を使用します。
<ul>
<li data-animal-type="bird">Owl</li>
<li data-animal-type="fish">Salmon</li>
<li data-animal-type="spider">Tarantula</li>
</ul>
はい、できます!
次のHTML
タグを持つ:
<tag key="value"/>
次のコマンドでそれらの属性にアクセスできますJavaScript
。
element.getAttribute('key'); // Getter
element.setAttribute('key', 'value'); // Setter
Element.setAttribute()
存在しない場合は、属性をHTML
タグに入れます。HTML
したがって、で設定する場合は、コードで宣言する必要はありませんJavaScript
。
key
:現在のタグにはまだ使用されていませんが、属性に任意の名前を付けることができます。
value
:それは常にあなたが必要とするものを含む文字列です。
はい、できます。質問自体でそれを行いました<html myAttri="myVal"/>
。
var demo = document.getElementById("demo")
console.log(demo.dataset.myvar)
// or
alert(demo.dataset.myvar)
//this will show in console the value of myvar
<div id="demo" data-myvar="foo">anything</div>
JavaScriptからプロパティを設定できます。
document.getElementById("foo").myAttri = "myVal"
次に例を示します。
document.getElementsByTagName("html").foo="bar"
カスタム属性をbodyタグ要素に設定する別の例を次に示します。
document.getElementsByTagName('body')[0].dataset.attr1 = "foo";
document.getElementsByTagName('body')[0].dataset.attr2 = "bar";
次に、次の方法で属性を読み取ります。
attr1 = document.getElementsByTagName('body')[0].dataset.attr1
attr2 = document.getElementsByTagName('body')[0].dataset.attr2
DevToolsのコンソールで上記のコードをテストできます。
データを使用する-いずれか、私はそれらを頻繁に使用します
<aside data-area="asidetop" data-type="responsive" class="top">
はい、data-*
属性を使用できます。このdata-*
属性は、ページまたはアプリケーション専用のカスタムデータを保存するために使用されます。
<ul>
<li data-pageNumber="1"> 1 </li>
<li data-pageNumber="2"> 2 </li>
<li data-pageNumber="3"> 3 </li>
</ul
良い!実際に必要なデータ属性を偽装することで、実際に一連のカスタムHTML属性を作成できます。
例えば。
[attribute='value']{
color:red;
}
<span attribute="value" >hello world</span>
明らかに機能しますが、ドキュメントが無効になります。必要がない限り、カスタム属性や要素を含めるためにJScriptを使用する必要はありません。新しい定式化された(カスタム)属性を、同じように扱う必要があります。 「データ」属性
「無効」は何も意味しないことを忘れないでください。ドキュメントは常に正常に読み込まれます。一部のブラウザは、実際にはDOCTYPEの存在によってのみドキュメントを検証します.....、あなたは実際に私が何を意味するかを知っています。
クリーンでドキュメントを有効に保つ別のアプローチは、必要なデータをidなどの別のタグに連結し、splitを使用して必要なときに必要なものを取得することです。
<html>
<script>
function demonstrate(){
var x = document.getElementById("example data").querySelectorAll("input");
console.log(x);
for(i=0;i<x.length;i++){
var line_to_illustrate = x[i].id + ":" + document.getElementById ( x[i].id ).value;
//concatenated values
console.log("this is all together: " + line_to_illustrate);
//split values
var split_line_to_illustrate = line_to_illustrate.split(":");
for(j=0;j<split_line_to_illustrate.length;j++){
console.log("item " + j+ " is: " + split_line_to_illustrate[j]);
}
}
}
</script>
<body>
<div id="example data">
<!-- consider the id values representing a 'from-to' relationship -->
<input id="1:2" type="number" name="quantity" min="0" max="9" value="2">
<input id="1:4" type="number" name="quantity" min="0" max="9" value="1">
<input id="3:6" type="number" name="quantity" min="0" max="9" value="5">
</div>
<input type="button" name="" id="?" value="show me" onclick="demonstrate()"/>
</body>
</html>
カスタムタグの便利な使い方が思い浮かびます"init"
。document.onLoad()
一度に評価され、タグの値を提供するJavaScript式を含めます。
<p><p>The UTC date is <span init="new Date().toUTCString()">?</span>.<p></p>
ボイラープレートJavaScriptコードの中には、DOM内のすべてのタグをスキャンしてdocument.onload()
、init属性を探し、それらに含まれる式を評価し、それらを含むタグのinnerHTMLに割り当てるものがあります。これにより、HTMLにJSP、PHPなどの機能がいくらか与えられます。現在、HTMLマークアップとそれを照らすJavaScriptコードを分割する必要があります。バグは分割コードが大好きです。
カスタム要素では、プレフィックスなしでカスタム属性を追加するのが一般的です。data-
HTML標準の例を次に示します。カスタム要素(country
属性に注意):
<flag-icon country="nl"></flag-icon>
MDN Web Docsの別の例:カスタム要素の使用(l
およびc
属性に注意):
<custom-square l="100" c="red"></custom-square>
追加することはできますが、JavaScriptコードも1行書く必要があります。
document.createElement('tag');
すべてが所定の位置にあることを確認します。私はInternetExplorerを意味します:)
次のようにして、属性の代わりにJavaScriptから必要な値を抽出できます。
<a href='#' class='click'>
<span style='display:none;'>value for JavaScript</span>some text
</a>