Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/41: Рейтинг темы: голосов - 41, средняя оценка - 4.85
 Аватар для Schulzkafer
82 / 50 / 2
Регистрация: 31.12.2019
Сообщений: 418

Регистрозависимость (элементарная теория)

18.06.2020, 21:08. Показов 8398. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объясните, пожалуйста, почему строка if (target.tagName != 'BUTTON') return; работает как надо только когда BUTTON напечатан большими буквами?
Согласно знаменитому учебнику JS,
HTML-теги не регистрозависимы, а DOM -зависимы.
Если BUTTON - это html-тег, следовательно он должен правильно работать при любом регистре,
если DOM -тогда только при маленьком, ведь тег button в html у нас написан маленькими буквами,
а в скрипте он написан большими.
В общем, очевидно, что я запутался в понятиях, объясните, плиз, как правильно.



JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE HTML>
<html>
 
<head>
  <meta charset="utf-8">
  <style>
    body {
      height: 2000px;
      /* добавим body прокрутку, подсказка должна работать и с прокруткой */
    }
 
    .tooltip {
      /* немного стилизуем подсказку, можете использовать свои стили вместо этих */
      position: fixed;
      padding: 10px 20px;
      border: 1px solid #b3c9ce;
      border-radius: 4px;
      text-align: center;
      font: italic 14px/1.3 sans-serif;
      color: #333;
      background: #fff;
      box-shadow: 3px 3px 3px rgba(0, 0, 0, .3);
    }
  </style>
</head>
 
<body>
 
  <p>ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя</p>
  <p>ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя ЛяЛяЛя</p>
 
  <button data-tooltip="эта подсказка должна быть длиннее, чем элемент">Короткая кнопка</button>
  <button data-tooltip="HTML<br>подсказка">Ещё кнопка</button>
 
  <p>Прокрутите страницу, чтобы кнопки оказались у верхнего края, а затем проверьте правильно ли выводятся подсказки.</p>
 
 
  <script>
    document.addEventListener('mouseover', function(event) {
    let target= event.target;
    if (target.tagName != 'BUTTON') return;
    console.log(event.target)
  })
  </script>
 
</body>
</html>
Добавлено через 46 секунд

Не по теме:

Надеюсь эту тему поместил в правильный раздел

0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2020, 21:08
Ответы с готовыми решениями:

Элементарная теория чисел
Разъясните элементарную теорию чисел.

Элементарная теория погрешности
Определить, какое равенство точнее. Буду очень благодарна любой помощи)

Элементарная теория погрешностей
Составить таблицу ф-ции заданную конечной суммой. Условие окончания суммирование : последний член ряда должен быть меньше Е, то есть...

5
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
18.06.2020, 22:22
Лучший ответ Сообщение было отмечено Schulzkafer как решение

Решение

Наверное потому что сравнение идет по символу кодировки, а B и b явно имеют разные коды в таблице.

К примеру:

Я 042F 1071 D0AF 208 175 223

я 044F 1103 D18F 209 143 255
1
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
18.06.2020, 22:29
Лучший ответ Сообщение было отмечено Schulzkafer как решение

Решение

Как бы то ни было,
JavaScript
1
2
console.log(document.getElementsByTagName('button')[0].tagName) // BUTTON
console.log('button' == 'BUTTON') // false
1
 Аватар для Schulzkafer
82 / 50 / 2
Регистрация: 31.12.2019
Сообщений: 418
18.06.2020, 22:56  [ТС]
console.log(document.getElementsByTagNam e('button')[0].tagName) // BUTTON
точно, не обращал на это внимание. значит, tagName выводится заглавными буквами, будем знать, всем спасибо)
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
19.06.2020, 10:03
Лучший ответ Сообщение было отмечено Schulzkafer как решение

Решение

Schulzkafer, чтобы не путаться, читайте документацию, там чётко прописано:
В XML (и XML-подобных языках) возвращаемое значение будет в нижнем регистре, а в HTML - в верхнем.

(c) https://developer.mozilla.org/... nt/tagName
3
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
19.06.2020, 21:38
Цитата Сообщение от kalabuni Посмотреть сообщение
В XML (и XML-подобных языках) возвращаемое значение будет в нижнем регистре, а в HTML - в верхнем.
Мда, честно говоря, даже не поверил сначала, что подобная бредятина на сайте мозиллы может быть, хотя и раньше видел там всякое. ))
Интересно было бы у автора этого пассажа что это за XML-подобные языки и чем они от XML отличаются. А что касается нижнего регистра, так это вообще вынос мозга. XML - регистрозависимый язык и для него name, Name и NAME, - три разных имени, а трансляция их в нижний регистр уничтожит эту разницу и приведет к потере данных.
Естественно, я заглянул и в оригинальный текст. Там это выглядело так
In XHTML (or any other XML format), the original case will be maintained...
То есть "В XHTML (или других XML форматах), сохраняется оригинальный регистр". Несмотря на то, что это более корректная формулировка, исходя из нее может сложиться неверное представление о том, что регистр символов, возвращаемый этим свойством зависит от языка (формата в их терминологии). Но это легко опровергается простым примером. Создаем простой XHTML-документа
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>Имя XHTML документа</title>
</head>
 
<body>
</body>
 
</html>
Открываем его, конечно же, в файрфоксе и выполняем в консоли document.documentElement.tagName, и получаем, как и положено HTML в верхнем регистре.
Пролить свет на эту загадку нам поможет нормативная документация Document Object Model Core
tagName has the value "elementExample". Note that this is case-preserving in XML, as are all of the operations of the DOM. The HTML DOM returns the tagName of an HTML element in the canonical uppercase form, regardless of the case in the source HTML document.
Иными словами сохранение регистра зависит не от языка, а от того, используется XML или HTML DOM. Проиллюстрировать это можно следующим примером
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
 
<body>
<script>
let xhtml = `<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>Имя XHTML документа</title>
</head>
 
<body>
${"</"}body>
 
${"</"}html>`;
 
let parser = new DOMParser();
let doc = parser.parseFromString(xhtml,"application/xhtml+xml");
console.log(doc.documentElement.tagName);
 
 
    </script>
</body>
 
</html>
Вот теперь на консоль будет выведено имя элемента в оригинальном регистре.
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2020, 21:38
Помогаю со студенческими работами здесь

Элементарная теория погрешностей. Определить, какое равенство точнее
Добрый день помогите пожалуйста решить данные задачи. 1) Определить, какое равенство точнее. 2) Округлить сомнительные цифры числа,...

Регистрозависимость импорта под windows
Почему и отчего такое происходит?

Элементарная БД
Не буду писать, что я только делаю первые шаги, что нахожусь только в начале пути и т.д. Во-первых, это не совсем так, во-вторых, нужен,...

Элементарная геометрия
Вот недавно наткнулся на следующую задачу. Она очень простая, но минуты две-три займет (а может и больше). Вопрос на самом рисунке

Не элементарная функция
Требуется решить уравнение x^5+x-a=0, где a - параметр По существу нам надо найти функцию x = x(a). Причем эта функция будет не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru