Чи можна додати спеціальний атрибут до тегу HTML, як описано нижче?
<tag myAttri="myVal" />
Чи можна додати спеціальний атрибут до тегу HTML, як описано нижче?
<tag myAttri="myVal" />
Відповіді:
Ви можете змінити свою декларацію! 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 - Атрибути .
<meta http-equiv="content-type" content="application/xhtml+xml" />
.
data-
.
Ви можете додавати власні атрибути до своїх елементів за бажанням. Але це зробить ваш документ недійсним.
У HTML 5 ви матимете можливість використовувати власні атрибути даних із префіксомdata-
.
|
не заборонений у файлі css href
, але це те, що потрібно для шрифтів Google
Ні, це порушить перевірку.
У HTML 5 ви можете / зможете додати спеціальні атрибути. Щось на зразок цього:
<tag data-myAttri="myVal" />
Функція jQuery data()
дозволяє асоціювати довільні дані з елементами 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 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>
Так, ви можете це зробити!
Маючи наступний HTML
тег:
<tag key="value"/>
Ми можемо отримати доступ до їх атрибутів за допомогою JavaScript
:
element.getAttribute('key'); // Getter
element.setAttribute('key', 'value'); // Setter
Element.setAttribute()
помістіть атрибут у HTML
тег, якщо його немає. Отже, вам не потрібно декларувати це в HTML
коді, якщо ви збираєтесь його встановитиJavaScript
.
key
: може бути будь-яке ім'я для атрибута, поки воно вже не використовується для поточного тегу.
value
: це завжди рядок, що містить те, що вам потрібно.
Ось приклад:
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-*
значення з JavaScript?
Інший підхід, який є чистим і дозволить зберегти документ дійсним, - це об'єднати потрібні дані в інший тег, наприклад 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>
Ви можете додати, але тоді вам також потрібно написати рядок коду JavaScript,
document.createElement('tag');
щоб все стало на свої місця. Я маю на увазі Internet Explorer :)
<tag ...>
тут, мабуть, означає просто будь-який тег HTML.
Ну! ви можете створити купу спеціальних атрибутів HTML, замаскувавши атрибути даних у те, що ви насправді хочете.
напр.
[attribute='value']{
color:red;
}
<span attribute="value" >hello world</span>
Це, мабуть, працює, але це може визнати недійсним ваш документ, немає необхідності використовувати JScript для того, щоб мати власні атрибути або навіть елементи, якщо вам не доведеться, вам потрібно просто ставитися до нових сформульованих (спеціальних) атрибутів так само, як ви ставитесь до своїх атрибут "data"
Пам'ятайте, що "недійсний" нічого не означає. Документ буде постійно завантажений. а деякі веб-переглядачі фактично підтверджували б ваш документ лише наявністю DOCTYPE ....., ви насправді знаєте, що я маю на увазі.
Ви можете зробити щось подібне, щоб витягти потрібне значення з JavaScript замість атрибута:
<a href='#' class='click'>
<span style='display:none;'>value for JavaScript</span>some text
</a>
<input type="hidden" value="...">
. Поміркуйте, однак, різницю між типом даних, які ви вводите в різні атрибути, на відміну від даних, які ви можете помістити в приховане поле. Приховувати <span>
(з усіх речей) <a>
за допомогою збереження фрагмента метаданих - це не дуже вдалий хід. Це було б властиво вашому сайту і дуже сильно залежало від JS (витончена деградація, люди).