Je regardais certaines des réponses ici, et je n'ai rien trouvé qui ajoute automatiquement une nouvelle feuille de style s'il n'y en a pas, et si ce n'est pas simplement en modifiant une existante qui contient déjà le style nécessaire, j'ai donc créé une nouvelle fonction ( devrait fonctionner sur tous les navigateurs, bien qu'il ne soit pas testé, utilise addRule et, en plus, seul le JavaScript natif de base, faites-moi savoir si cela fonctionne):
function myCSS(data) {
    var head = document.head || document.getElementsByTagName("head")[0];
    if(head) {
        if(data && data.constructor == Object) {
            for(var k in data) {
                var selector = k;
                var rules = data[k];
                var allSheets = document.styleSheets;
                var cur = null;
                var indexOfPossibleRule = null,
                    indexOfSheet = null;
                for(var i = 0; i < allSheets.length; i++) {
                    indexOfPossibleRule = findIndexOfObjPropInArray("selectorText",selector,allSheets[i].cssRules);
                    if(indexOfPossibleRule != null) {
                        indexOfSheet = i;
                        break;
                    }
                }
                var ruleToEdit = null;
                if(indexOfSheet != null) {
                    ruleToEdit = allSheets[indexOfSheet].cssRules[indexOfPossibleRule];
                } else {
                    cur = document.createElement("style");
                    cur.type =  "text/css";
                    head.appendChild(cur);
                    cur.sheet.addRule(selector,"");
                    ruleToEdit = cur.sheet.cssRules[0];
                    console.log("NOPE, but here's a new one:", cur);
                }
                applyCustomCSSruleListToExistingCSSruleList(rules, ruleToEdit, (err) => {
                    if(err) {
                        console.log(err);
                    } else {
                        console.log("successfully added ", rules, " to ", ruleToEdit);
                    }
                });
            }
        } else {
            console.log("provide one paramter as an object containing the cssStyles, like: {\"#myID\":{position:\"absolute\"}, \".myClass\":{background:\"red\"}}, etc...");
        }
    } else {
        console.log("run this after the page loads");
    }
};  
puis ajoutez simplement ces 2 fonctions d'assistance soit à l'intérieur de la fonction ci-dessus, soit n'importe où ailleurs:
function applyCustomCSSruleListToExistingCSSruleList(customRuleList, existingRuleList, cb) {
    var err = null;
    console.log("trying to apply ", customRuleList, " to ", existingRuleList);
    if(customRuleList && customRuleList.constructor == Object && existingRuleList && existingRuleList.constructor == CSSStyleRule) {
        for(var k in customRuleList) {
            existingRuleList["style"][k] = customRuleList[k];
        }
    } else {
        err = ("provide first argument as an object containing the selectors for the keys, and the second argument is the CSSRuleList to modify");
    }
    if(cb) {
        cb(err);
    }
}
function findIndexOfObjPropInArray(objPropKey, objPropValue, arr) {
    var index = null;
    for(var i = 0; i < arr.length; i++) {
        if(arr[i][objPropKey] == objPropValue) {
            index = i;
            break;
        }
    }
    return index;
}
(notez que dans les deux, j'utilise une boucle for au lieu de .filter, car les classes de style / liste de règles CSS n'ont qu'une propriété length et aucune méthode .filter.)
Puis pour l'appeler:
myCSS({
    "#coby": {
        position:"absolute",
        color:"blue"
    },
    ".myError": {
        padding:"4px",
        background:"salmon"
    }
})
Faites-moi savoir si cela fonctionne pour votre navigateur ou donne une erreur.