Нормально ли иметь два элемента с одинаковым идентификатором в двух элементах div с другим идентификатором: обновлено

Я согласен с ответом от zacherates.

Но вы можете сделать вызов intern () в ваших нелиберальных строках.

Из примера zacherates:

// ... but they are not the same object
new String("test") == "test" ==> false 

Если вы ставите нелитеральное равенство строки, это правда

new String("test").intern() == "test" ==> true 
13
задан Simon 1 June 2018 в 14:58
поделиться

10 ответов

Уникальный :

В математике и логике фраза «есть один и только один» используется для обозначения того, что существует ровно один объект с определенным свойством.

# div1 #loading не устраняет тот факт, что у вас есть два экземпляра #loading в вашем документе . Так что нет, не делай этого.

3
ответ дан 1 December 2019 в 17:37
поделиться

Это нормально? Нет.

Это рекомендуется? Точно нет! На самом деле это запрещено (но контроль над ним слабый).

Но это (очевидно) работает, так что ...

2
ответ дан 1 December 2019 в 17:37
поделиться

Идентификатор используется для различения элементов, они должны быть уникальными по разным причинам, одна из них - использование javascript, такая функция, как getElementById, не будет работать, если у вас есть повторяющийся идентификатор. , вы не сможете предсказать, что он будет делать в другом браузере, поскольку JS реализуется самостоятельно в каждом браузере по-разному.

Если вы хотите использовать такую ​​структуру, как #div loading и # div2 loading, кажется очевидным, что обе загрузки имеют одинаковое использование, поэтому они должны быть классами и будут использоваться следующим образом

# div1.loading и # div2.loading

Также одним плюсом использования этого синтаксиса было бы использование общего стиля.загрузка, подобная этой

.loading {стиль, общий для обеих загрузок}

# div1.loading {стиль, используемый только при загрузке в div1}

# div2.loading {стиль, используемый только при загрузке в div2}

1
ответ дан 1 December 2019 в 17:37
поделиться

Да, вы правы, так делать не рекомендуется. Идентификатор всегда должен быть уникальным (например, если вы хотите выбрать элемент с помощью javascript). Если вы просто хотите добавить одинаковый стиль к div'ам, просто используйте css class.

3
ответ дан 1 December 2019 в 17:37
поделиться

Просто потому, что никто другой его не опубликовал - спецификация HTML, раздел по идентификатору , в котором говорится:

id = name [CS]

Это атрибут присваивает имя элемента. Это имя должно быть уникальным в документе.

4
ответ дан 1 December 2019 в 17:37
поделиться

идентификатор должен (должен) быть уникальным !!

у вас будут проблемы с выбором его через JS в большинстве браузеров - лучше использовать класс

12
ответ дан 1 December 2019 в 17:37
поделиться

Основная причина - манипуляции с DOM в JavaScript. В вашем случае, если вы сделаете что-то вроде этого ...

document.getElementById("loading")

... JavaScript вернет первый элемент и только первый элемент. У вас не будет возможности получить доступ к остальным без серьезной прогулки по DOM.

6
ответ дан 1 December 2019 в 17:37
поделиться

Идентификаторы должны быть уникальными, поэтому id1 и id2 подходят, но для многих элементов с одинаковым стилем используйте класс HTML и селектор классов CSS:

.loading
{
styles here
}

Их можно повторять столько раз, сколько вы хотите страница:)

3
ответ дан 1 December 2019 в 17:37
поделиться

проверка и пуристизм в сторону, это совершенно функционально. Но я определенно был бы раздражен, если бы я использовал этот #loading id и обнаружил, что эффект jquery или эффект css применяется к более чем 1 элементу. Скажите мне, IE6 или 7 или Firefox 1.x или 2.x разрушают этот код.

0
ответ дан 1 December 2019 в 17:37
поделиться

Измените свой идентификатор на класс. Не рекомендуется указывать повторяющийся идентификатор.

Представьте, что у двух учеников в классе один и тот же список ответов. Представьте, что они получают результат обследования. Как школа сможет распознать оценочную ведомость?

Ваш способ несовместим с разными браузерами и сильно повлияет на кодирование JavaScript, отправку формы и т. Д.

Вы можете получить тот же эффект, используя класс

см.

<div id="div1">
     <img class="loading" />
</div>
<div id="div2">
     <img class="loading" />
</div>

и css:

#div1 .loading
{
    some style here...
}
#div2 .loading
{
    another style here...
}
19
ответ дан 1 December 2019 в 17:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: