Могу ли я добавлять любые атрибуты в HTML-теги, чтобы я мог позже получить их значение с помощью javascript? Например:
<a href = "something.html" hastooltip = "yes" tipcolour = "yellow">...</a>
Если это не сработает, как бы вы могли хранить такие произвольные фрагменты информации?
Редактировать: Поскольку кажется, что создание атрибутов HTML технически недопустимо, я перефразировал вторую часть этого вопроса в отдельный вопрос здесь: Как сохранить произвольные данные для некоторых HTML-тегов



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ты можешь. Страница не пройдет проверку, однако большинство браузеров ее примут.
Это почти наверняка неправильный способ сделать это. Попробуйте использовать class = "hasTooltip_yes tipcolour_yellow"
Вы же не думаете, что искажение атрибута class еще более неправильно?
Если вы уберете атрибут класса, он все равно будет проверяться, поэтому с точки зрения соблюдения стандартов вам все равно будет лучше.
То, что вы придерживаетесь стандартов, не означает, что у вас есть наилучшее возможное решение.
В зависимости от информации, которую вы хотите сохранить, вам следует посмотреть на некоторые другие доступные атрибуты. Они не выглядят хорошими кандидатами, но 'rel' использовался для множества интересных вещей.
согласно спецификации, атрибут rel может содержать только LinkTypes, например: начало следующей предыдущей главы
Но спецификация не определяет авторитетный список типов ссылок и фактически оставляет место для расширения.
Что ж, вы всегда можете создать свое собственное DTD, чтобы получить новые допустимые атрибуты для ваших тегов. Браузер не работает, вам следует проверить свой JavaScript, если у вас есть доступ к этим настраиваемым атрибутам. Или вы можете использовать существующие возможности, предоставляемые HTML и CSS. Вы можете использовать несколько классов, например
<a href = "..." class = "class-one class-two has-tooltip">
Что касается выбора цвета, я настоятельно не рекомендую вам использовать жестко запрограммированные названия цветов в вашем HTML, у вас есть CSS для объявления стилей. Используйте атрибут class в качестве ловушки для объявления CSS и выберите имена классов семантический, например
HTML:
<a href = "..." class = "has-tooltip common-tooltip">
<a href = "..." class = "has-tooltip long-tooltip">
CSS:
a.has-tooltip {
colour: red;
}
a.common-tooltip {
background: #ddd;
}
a.long-tooltip {
background: #ebf;
}
А в своем коде JavaScript вы можете генерировать элементы с такими классами, как «long-tooltip» и «common-tooltip» вместо «yellow-tooltip», так что вы не будете противоречить себе в случае переделки страницы, чтобы иметь зеленые всплывающие подсказки.
приведенный мной пример был просто примером: данные, которые я буду хранить, могут быть чем угодно, а не только цветами и прочим.
В HTML5 - да. Вам просто нужно добавить к ним префикс data-. См. спецификация.
Конечно, это подразумевает, что вы должны использовать тип документа HTML5 (<!doctype html>), даже если браузерам все равно.
HTML5 все еще находится в стадии разработки, это небезопасная рекомендация.
Умм, эта спецификация предназначена для использования до того, как она станет окончательной. wiki.whatwg.org/wiki/…
Это не сломает ничего больше, чем произвольный выбор атрибутов, и это действительно для будущих спецификаций, все улыбаются!
@annakata, что небезопасно в этой рекомендации? Что сломается?
Я думаю, он имел в виду небезопасно, поскольку спецификация могла измениться в любой момент, прежде чем «выйти в финал». А если что-то изменится, что-то сломается.
Не беспокойтесь о том, что спецификация еще не доработана. Окончательные спецификации могут быть изменены / отменены. Браузеры могут не поддерживать спецификацию. Просто убедитесь, что вы тестируете своих пользователей и развивайтесь вместе с Интернетом!
Также обратите внимание, что jQuery позволяет вам читать эти атрибуты и, в свою очередь, хранить более сложные данные (но методы, которые изменяют значения, могут не отображаться в HTML как атрибуты). По сути, data- можно использовать для объявления данных в HTML, которые затем можно прочитать с помощью .data (...), но для записи данных используется более эффективный метод, чем изменение HTML. Я говорю все это просто потому, что это сначала сбивает с толку тех, кто плохо знаком с использованием jquery .data API: api.jquery.com/data
+1 Я большой поклонник использования атрибутов data- для декларативного поведения подключения вместо использования классов. Тем не менее, что-то вроде tipcolour я бы попытался использовать класс, если бы мог правильно понять CSS. Другими словами, атрибуты поведения, классы стиля.