Переопределение родительского css после использования appendChild

Я видел несколько сообщений, предлагающих пометить !important в стиле css, чтобы переопределить родительский css. Но у меня такая ситуация: создается дочерний узел с помощью document.createElement, а затем appendChild к родителю:

let parentNode = document.getElementById('parentId')
let childNode = document.createElement('div')
childNode.id = 'childId'
parentNode.appendChild(childNode)


#parentId {
  background-color: #6d7373;
  width: 99%;
  height: 40px;
}

#childId {
  background-color: yellow;
  width: 99%;
  height: 40px;
}

В этом случае !important не работает. Родительский css по-прежнему доминирует. Есть ли способ сделать переопределение? Спасибо.

Вы пытались дать своему ребенку класс, уникальный от родителя, и стилизовать его?

Jacob 14.12.2020 22:50

@Jacob Я даю ребенку уникальный идентификатор и стилизую его, используя этот идентификатор (цвет фона). Но это не отменяет.

Tristan Tran 14.12.2020 22:51
jsfiddle.net/fgqtnzb7 <= работает как задумано
Taplar 14.12.2020 22:58

@Taplar Это не работает в моем Электроне. Фон имеет серый цвет. Я вижу, что это работает на скрипке. Спасибо.

Tristan Tran 14.12.2020 23:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлено: установите идентификатор для дочернего элемента с помощью Element.setAttribute()

https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute

let parentNode = document.getElementById('parentId')
let childNode = document.createElement('div')
childNode.innerText = 'inner text'
childNode.setAttribute('id', 'childId')
parentNode.appendChild(childNode)
#parentId{
  color: red
}

#childId{
  color: green
}
<div id='parentId'></div>

Спасибо. Можно ли как-нибудь использовать дочерний идентификатор вместо прямого >div? Я добавил больше деталей в свой вопрос.

Tristan Tran 14.12.2020 22:56

Спасибо. Это то же самое, что и решение Taplar. Почему-то это не работает в моем приложении Electron. Я закрываю это в любом случае. Спасибо.

Tristan Tran 14.12.2020 23:03

@TristanTran жаль это слышать. Вы пробовали childNode.id = 'childId' вместо setAttribute()? Если нет, вы можете открыть новый вопрос и указать, что он для Электрона.

symlink 14.12.2020 23:05

Другие вопросы по теме