FROM node:16
WORKDIR /usr/src/app
COPY ./package*.json ./
COPY ./lerna.json ./
RUN npm install
WORKDIR /usr/src/app/packages/backend
COPY ./packages/backend ./
RUN npm install
WORKDIR /usr/src/app/packages/frontend
COPY ./packages/frontend ./
RUN npm install --legacy-peer-deps
WORKDIR /usr/src/app/packages/static_hoster
COPY ./packages/static_hoster ./
RUN npm install
WORKDIR /usr/src/app
RUN npm run build
COPY . .
EXPOSE 3000
CMD ["npm", "start"] .active {
color: red;
}<div>a</div>
<div>b</div>
<div>c</div>
<div>d</div>
<div>e</div>document.onkeydown = (e) => {
document.querySelectorAll('div').forEach(el => {
if(el.textContent === e.key.toLowerCase()) {
el.classList.add('active');
} else {
el.classList.remove('active');
}
})
} Array.from - по дефолту querySelectorAll возвращает nodeList (к нему можно применить только forEach для пробега), а нам нужен массив чтобы получить доступ к методам массивов, в данном случае find.
Find - пробегается по массиву и возвращает undefined или первый найденный элемент
v - текущий элемент, v.textContent - v это объект у которого есть textContent поле.
mass[i] если mass объект, достаёт значение поля по ключу, если mass массив достаёт элемент по индексу.
v.textContent == mass[i] сравнивает на соответствие, условие которое передано в find, вернуться все элементы к которым подошло условие (вернуло true).
let res = Array.from(elems).find(v => v.textContent == mass[i]);