Как установить встроенный CSS элемента по умолчанию с помощью javascript?

У меня есть простая функция, в которой я меняю стиль текста по умолчанию, когда установлен флажок, и меняю стиль обратно на стиль по умолчанию, когда флажок не установлен.

terms.style = ""; должен сбросить стиль до значений по умолчанию, но по некоторым причинам этого не происходит, и я совершенно не понимаю, почему. Я знаю, что область else выполняется, когда флажок не установлен, так как я тестировал его, вручную вводя другой стиль.

const form = document.getElementById('form');
const checkBox = form.querySelector('input[name=termsCheckBox]');

checkBox.addEventListener('click', function(){
    const terms = document.getElementById('termsText');
    if (checkBox.checked){
        terms.style = "color: black; font-weight: normal";
    } else {
        terms.style = "";
    }
});//end of function

Ваш код работает jsfiddle.net/d6rg1v25

Mohammad 07.12.2018 16:05
element.style - это Object только для чтения. Либо используйте element.setAttribute('style', 'color: black; font-weight: normal'), либо используйте element.style.cssText = 'color: black; font-weight: normal'.
connexo 07.12.2018 16:08

К сожалению, ни один из них не помогает.

Mortem 07.12.2018 16:15

Есть ли у вашего элемента какой-то CSS в атрибуте style, который вы хотите вернуть по умолчанию?

Mohammad 07.12.2018 16:18

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

Mortem 07.12.2018 16:20

@CalvinNunes Вы не должны изменять код OP

Mohammad 07.12.2018 16:28

не изменилось ... только добавил HTML, необходимый для воспроизведения минимальный воспроизводимый пример. JS был таким же только с console.info

Calvin Nunes 07.12.2018 16:29

Вы добавили код из jsfiddle.net/d6rg1v25, в котором я изменил OPs css

Mohammad 07.12.2018 16:30
Поведение ключевого слова "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) для оценки ваших знаний,...
1
8
390
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно MDN:

Styles should not be set by assigning a string directly to the style property (as in elt.style = "color: blue;")

Правильный способ:

checkBox.addEventListener('click', function(){
    const terms = document.getElementById('termsText');

    if (checkBox.checked){
        terms.style.color = "black";
        terms.style.fontWeight = "normal";
    }else{
        terms.style.color = "";
        terms.style.fontWeight = "";
    }
});

Привет Дмитрий. Я изменил код на ваш, но, к сожалению, стиль все еще не сбрасывается.

Mortem 07.12.2018 16:11
Ответ принят как подходящий

Вы можете получить встроенный CSS в атрибуте style элемента, используя getAttribute(), и сохранить его в переменной, а при проверке / снятии флажка вставить и удалить его из атрибута style

var checkBox = document.querySelector('#form input[name=termsCheckBox]'),
    terms = document.getElementById('termsText'),
    style = terms.getAttribute('style');

checkBox.addEventListener('click', function(){
  if (checkBox.checked)
    terms.style.cssText = "color:black; font-weight:normal";
  else
    terms.style.cssText = style;
});
<form id = "form">
  <input type = "checkbox" name = "termsCheckBox">
  <textarea id = "termsText" style = "color:red; font-weight:bold">termsText</textarea>
</form>

Почему не просто terms.style = style; в заявлении else?

vrintle 07.12.2018 16:32

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