javascript: css 没有解决,为什么?

javascript: css is not addressed, why?

我编写了以下函数:

createEl : function (type, id, className, parent, value) {
var el= document.createElement(type);
if(id)
    el.id = id;
if(className)
    el.className = className;
if(parent)
    parent.appendChild(el);
if(value)
    el.appendChild(document.createTextNode(value));
return el;
}

使用此代码:

var imageTD = this.createEl("td", null, "TD-IMAGE", bodyTR, bd);

css 已解决。但使用此代码:

var imageTD = this.createEl('td', null, "TD-IMAGE".concat(entrie.isBefore(now)?"_DIMMED":'', bodyTR, bd);

没有任何反应。我做错了什么?这是完整的代码部分:

getDom: function() {
var wrapper = this.createEl("div", null, null, null, null);

// tell MM to call and get our content
Log.log(JSON.stringify(this.active_birthdays));

if ((moment() > this.midnight) || (!this.loaded)) {
    var month = moment().month();
    var year = moment().year();
    var monthName = moment().format("MMMM");
    var monthLength = moment().daysInMonth();
    var now = moment();

    if(Object.keys(this.active_birthdays).length > 0) {

    // create your table here
    var table = this.createEl("table", "birthday-table", "TABLE", wrapper, null);

    // create tableheader here, array of column names
    var table_header = this.createTableHeader(table, "THEAD", [" "," "]);

    // create TBODY section with day names
    var tBody = this.createEl('tBody', "birthday-tbody", "TBODY", table, null);

    var birthdays_seen = {};        
    for(var birthday of Object.keys(this.active_birthdays)) {
        for(var person of this.active_birthdays[birthday]) {

        // create looped row section
        var bodyTR = this.createEl('tr', "birthday-tr-body", "TR-BODY", tBody, null);

        let now = moment();
        let entrie = moment(birthday,"DD.MM");

        if(this.config.dimmEntries) {               
            entrie = moment(birthday,'DD.MM');
        }

        // delete leading 0 and month
        var bd = "";

        if(birthdays_seen[birthday] == undefined) {
            bd = (birthday.startsWith("0")? birthday.substring(1): birthday).split('.')[0];
            var imageTD = this.createEl('td', null, "TD-IMAGE".concat(entrie.isBefore(now)?"_DIMMED":'', bodyTR, bd);

            var nameTD = this.createEl("td", null, "TD-BODY".concat(entrie.isBefore(now)?"_DIMMED":'', bodyTR, person.name);

            this.createEl("span", null, "TD-AGE", nameTD, " ");                     

            // needs class for width
            var spanTDo = this.createEl("span", null, "TD-AGE".concat(entrie.isBefore(now)?"_DIMMED":'', nameTD, person.age);

        }
        else{
            // add a break
            this.createEl("br", null , null , spanTDo, null);
            // add a span with name
            var nameTD = this.createEl("span", null, "TD-BODY".concat(entrie.isBefore(now)?"_DIMMED":'',spanTDo, person.name);

            // add a span with age
            var spanTD = this.createEl("span", null, "TD-AGE".concat(entrie.isBefore(now)?"_DIMMED":'', spanTDo, person.age);

        }                   

        var spacerTR = this.createEl("tr", null, null , tBody, null);
        var spacerTD = this.createEl("td", null, "SPACER", spacerTR, " ");
        spacerTD.colSpan = "2";
        birthdays_seen[birthday] = true;

        }
    }

    // Create TFOOT section -- currently used for debugging only
    if (this.config.debugging) {
        var table_footer = this.createTableFooter(tBody, null, [" "," "]);
        //footerTD.innerHTML = "Birthdaylist is currently in DEBUG mode!<br />Please see console log.";
    }
    else {
        var table_footer = this.createTableFooter(tBody, null, [" "," "]);
    }

    }

    // pass the created content back to MM to add to DOM.
    return wrapper;

}
// Dom is loaded
this.loaded = true;

},

非常感谢。

问题是您的父元素 bodyTR 未定义并且 bd 也未定义(来自您已发布的代码库)

如果您将代码替换为:

function createEl (type, id, className, parent, value) {
  const el = document.createElement(type);
  if(id)
      el.id = id;
  if(className)
      el.className = className;
  if(parent)
      parent.appendChild(el);
  if(value)
      el.appendChild(document.createTextNode(value));
  return el;
}

const imageTD = this.createEl("td", null, "TD-IMAGE", document.body, 'test');

console.log(imageTD)

成功了!

专业提示:当您决定使用变量时使用 const/let 是当今的通用标准