Могу я просто создать атрибуты в своих HTML-тегах?

Могу ли я добавлять любые атрибуты в HTML-теги, чтобы я мог позже получить их значение с помощью javascript? Например:

<a href = "something.html" hastooltip = "yes" tipcolour = "yellow">...</a>

Если это не сработает, как бы вы могли хранить такие произвольные фрагменты информации?

Редактировать: Поскольку кажется, что создание атрибутов HTML технически недопустимо, я перефразировал вторую часть этого вопроса в отдельный вопрос здесь: Как сохранить произвольные данные для некоторых HTML-тегов

+1 Я большой поклонник использования атрибутов data- для декларативного поведения подключения вместо использования классов. Тем не менее, что-то вроде tipcolour я бы попытался использовать класс, если бы мог правильно понять CSS. Другими словами, атрибуты поведения, классы стиля.

AaronLS 31.10.2012 21:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
44
1
14 605
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ты можешь. Страница не пройдет проверку, однако большинство браузеров ее примут.

Это почти наверняка неправильный способ сделать это. Попробуйте использовать class = "hasTooltip_yes tipcolour_yellow"

Вы же не думаете, что искажение атрибута class еще более неправильно?

nickf 09.01.2009 09:53

Если вы уберете атрибут класса, он все равно будет проверяться, поэтому с точки зрения соблюдения стандартов вам все равно будет лучше.

Kevin Loney 09.01.2009 09:56

То, что вы придерживаетесь стандартов, не означает, что у вас есть наилучшее возможное решение.

Kibbee 11.01.2009 05:23

В зависимости от информации, которую вы хотите сохранить, вам следует посмотреть на некоторые другие доступные атрибуты. Они не выглядят хорошими кандидатами, но 'rel' использовался для множества интересных вещей.

согласно спецификации, атрибут rel может содержать только LinkTypes, например: начало следующей предыдущей главы

nickf 09.01.2009 09:59

Но спецификация не определяет авторитетный список типов ссылок и фактически оставляет место для расширения.

Gareth 09.01.2009 10:37

Что ж, вы всегда можете создать свое собственное 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», так что вы не будете противоречить себе в случае переделки страницы, чтобы иметь зеленые всплывающие подсказки.

приведенный мной пример был просто примером: данные, которые я буду хранить, могут быть чем угодно, а не только цветами и прочим.

nickf 09.01.2009 10:15
Ответ принят как подходящий

В HTML5 - да. Вам просто нужно добавить к ним префикс data-. См. спецификация.

Конечно, это подразумевает, что вы должны использовать тип документа HTML5 (<!doctype html>), даже если браузерам все равно.

HTML5 все еще находится в стадии разработки, это небезопасная рекомендация.

annakata 14.01.2009 00:33

Умм, эта спецификация предназначена для использования до того, как она станет окончательной. wiki.whatwg.org/wiki/…

nes1983 14.01.2009 14:05

Это не сломает ничего больше, чем произвольный выбор атрибутов, и это действительно для будущих спецификаций, все улыбаются!

Rich Bradshaw 25.03.2009 00:31

@annakata, что небезопасно в этой рекомендации? Что сломается?

TRiG 09.02.2011 13:43

Я думаю, он имел в виду небезопасно, поскольку спецификация могла измениться в любой момент, прежде чем «выйти в финал». А если что-то изменится, что-то сломается.

βӔḺṪẶⱫŌŔ 07.05.2011 17:01

Не беспокойтесь о том, что спецификация еще не доработана. Окончательные спецификации могут быть изменены / отменены. Браузеры могут не поддерживать спецификацию. Просто убедитесь, что вы тестируете своих пользователей и развивайтесь вместе с Интернетом!

Jeremy Lawson 20.06.2012 05:02

Также обратите внимание, что jQuery позволяет вам читать эти атрибуты и, в свою очередь, хранить более сложные данные (но методы, которые изменяют значения, могут не отображаться в HTML как атрибуты). По сути, data- можно использовать для объявления данных в HTML, которые затем можно прочитать с помощью .data (...), но для записи данных используется более эффективный метод, чем изменение HTML. Я говорю все это просто потому, что это сначала сбивает с толку тех, кто плохо знаком с использованием jquery .data API: api.jquery.com/data

AaronLS 31.10.2012 21:54

Другие вопросы по теме