Отменить или отменить изменение таблицы стилей CSS

У меня есть веб-страница с некоторыми настройками, которые позволят пользователю изменять определенные стили веб-страницы. Я успешно получил его, так что я могу изменить стили как идентификаторов, так и классов, но мне было интересно, есть ли быстрый / простой способ вернуть его обратно к тому, что изначально было в таблице стилей CSS (во многом как baseVal и animVal в SVG),

Мой JavaScript выглядит следующим образом:

    function cssrules() {
      var rules = {};
      var ds = document.styleSheets,
        dsl = ds.length;
      for (var i = 0; i < dsl; ++i) {
        var dsi = ds[i].cssRules,
          dsil = dsi.length;
        for (var j = 0; j < dsil; ++j) rules[dsi[j].selectorText] = dsi[j];
      }
      return rules;
    };

    function css_getclass(name) {
      var rules = cssrules();
      if (!rules.hasOwnProperty(name)) throw 'todo:deal_with_notfound_case';
      return rules[name];
    };

    function modify_css(data) {
      var i, mod;
      for (i = 0; i < data.length; i += 1) {
        mod = data[i].change;
        css_getclass(mod).style[data[i].changing] = data[i].value;
      }
    }

     //some example data
    var mod = [{
      change: ".large_glow",
      changing: "color",
      value: "red"
    }, {
      change: ".large_glow",
      changing: "text-shadow",
      value: "0px 0px 20px #900"
    }];
    document.getElementById("click").addEventListener("click", function() {
      modify_css(mod);
    });
.large_glow {
  text-shadow: 0px 0px 10px #555;
}
<span class="large_glow">This is some text</span><br>
<button id="click">Change the class</button><br>
<button id="not_click">Revert the class (if possible)</button>

Если нет, то я уверен, что будет легко создать массив для каждого исходного класса и просто использовать вышеупомянутую функцию, чтобы вернуть его к тому, как он был изначально.

Мне бы не хотелось использовать jQuery, так как я никогда не использовал его раньше и предпочел бы избегать внешних библиотек.

0 ответов

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