-1

Почему доступ к id через дефис не работает? Как это пофиксить?

main-second.outerHTML = 'hand';
#main{
background: orange; 
}

#main-second { font-size: 2vmax;
margin-left: 50%; }

<div id="main">
<div id="main-second">
Text
</div>
</div>
Black_Viper
  • 1,259
  • https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById – Alexey Ten Sep 15 '21 at 04:18
  • 3
    А обращаться к элементам по глобальному id это плохая практика уже лет 15 – Alexey Ten Sep 15 '21 at 04:19
  • 2
    Я новичек и не знаю. А как правильно? Пожалуйста, приведите правильный пример в коде) – Black_Viper Sep 15 '21 at 04:21
  • 2
    в этой ссылке ничего не сказано про тире в id – Black_Viper Sep 15 '21 at 04:22
  • По ссылке есть примеры. Там же можно и на русский переключится: https://developer.mozilla.org/ru/docs/Web/API/Document/getElementById#example – Alexey Ten Sep 15 '21 at 04:23
  • 2
    там тоже про тире ничего не сказано – Black_Viper Sep 15 '21 at 04:25
  • 2
    там два примера и я не могу понять, какой из них правильный, чтобы не обращаться к глобальному id – Black_Viper Sep 15 '21 at 04:26

2 Answers2

3

JS интерпретирует ваш код, как - из main вычесть second.outerHTML = 'hand';.

Если всё же есть необходимость в дефисе, то используйте getElementById():

document.getElementById('main-second').outerHTML = 'hand';
#main {
  background: orange;
}

#main-second { font-size: 2vmax; margin-left: 50%; }

<div id="main">
  <div id="main-second">
    Text
  </div>
</div>
UModeL
  • 34,026
  • 6
  • 29
  • 71
-1

Есть правило, что всё, что написано в CSS через дефис, в JS пишется через camelCase. Именно поэтому есть el.style.backgroundColor и пр. обращения к свойствам стилей