JavaScript

вопрос по языку JS, описание внутри

почему когда прописываешь путь к элементу html, чтобы изменить его свойство например document.body.querySelector("#select").style.backgroundColor = "red";
нужно писать еще и .style, хотя явно в пути его нет и писать не background-color (как в CSS) а backgroundColor
Val Zim
Val Zim
15
Это не путь. Это методы и свойства объектов, на которых построен javascript, по цепочке вызываются
Talgat 1994
Talgat 1994
65 462
Лучший ответ
Объяснение тому что нужно писать backgroundColor, а не background-color весьма простое. Интерпритатор JS может принять дефис за минус. То есть посчитать что background-color означает что из некоей переменной background нужно вычесть переменную color.
Сергей Зыков не несите пурги
наверное у вас мало знаний об именовании перененных в js
Гугл → JavaScript Object, JavaScript DOM (Document Object Model)
_______________________

Оттуда можно убрать .body

А по style... элементы страницы работают как объект, соответственно и обращаются к ним методами объектов...

Если у нас есть какой-нибудь объект (допустим):

let document = {'id' : 'moo', 'class' : 'boo', 'src' : '...' }

А нам нужно пихнуть туда новый атрибут, это можно сделать так:

document.style.backgroundColor = "red";

И на выходе получим это:

document = {'id' : 'moo', 'class' : 'boo', 'src' : '...', style : { 'backgroundColor' : 'red' } }

Новый объект в объекте...

Можно и так, если есть железобетонная уверенность, что больше никакого стиля не будет нужно:

document.style = "background-color: red";

Что на выходе даст:

document = {'id' : 'moo', 'class' : 'boo', 'src' : '...', 'style' : 'background-color: red' }

т. е. уже не объект в объекте (куда можно добавить еще кучу атрибутов), а один атрибут с единственным значением... куда уже нельзя что-то новое добавить, а можно только переписать ( https://jsfiddle.net/OPTlMUS/vyhtp0a6/ - работает только последняя запись такого вида)
____________

По тире не знаю, но например в названиях переменных тоже не допускается этот символ... возможно чтобы не путалось с минусом...
СД
Сергей Дуда
62 360
все достаточно просто по свойству и названию backgroundColor
так захотели разработчики языка javascript и точка а остальные рассуждения это ни о чем
Roman Nenahoff
Roman Nenahoff
16 208
потому что вы находитесь не внутри css, а внутри кода javascript и должны использовать, таким образом, не атрибут css (background-color), а свойство backgroundColor, которое относится к объекту style, который, в свою очередь, является свойством вашего объекта-элемента.