2

我在将 CSS 样式添加到自动生成的文本节点时遇到问题。我知道 textnode 没有任何父节点。所以我不能只在其中附加 css 样式。

基本上,我需要做的是当用户单击我在页面中创建它的“+”按钮时,它会将一个新的文本节点添加到 . 当用户再次点击时,它会不断添加另一个新的文本节点。但是,我想在创建 textnode 后添加一个 CSS 样式。

这是我的代码:

function addRowToTable() {

//find the last row in the table and add the new textnode when user clicks on the button
var tbl = document.getElementById('audioTable2');
var lastRow = tbl.rows.length;
var iteration = lastRow;
var row = tbl.insertRow(lastRow);

//after find the last row in the table, and it will add the new cell with the new textnode
    var cellLeft = row.insertCell(0);
    var el_span = document.createElement('span');
    var el_spanClass = el_span.setAttribute('class', 'test');
    var textNode = document.createTextNode(iteration);
    cellLeft.appendChild(textNode);
}

//this is the css style I would like to apply into the new gerenated textnode
function appendStyle(styles){
     var css = document.createElement('style');
 css.type='text/css';

 if (css.styleSheet) css.styleSheet.cssText = styles;
 else css.appendChild(document.createTextNode(styles));
 document.getElementsByTagName("head")[0].appendChild(css);
}

有人可以帮我吗?非常感谢。

4

1 回答 1

4

您说:“我在将 CSS 样式添加到自动生成的文本节点时遇到问题”,但您提供的代码显示您正在尝试为每个新文本节点添加一个style元素。head我认为您想要的是 1) 将样式表中已经定义的样式应用于 textnode,或者 2) 直接设置 textnode 内联样式。因此,我认为您的代码应该是:

1)通过以下方式将css样式表中的样式应用于文本节点span

//after find the last row in the table, and it will add the new cell with the new textnode
    var cellLeft = row.insertCell(0);
    var el_span = document.createElement('span');
    var el_spanClass = el_span.setAttribute('class', 'test');
    var textNode = document.createTextNode(iteration);
    cellLeft.appendChild(el_span);
    el_span.appendChild(textNode);
}

这会将span放入单元格(您不会在代码中执行此操作),然后将 textnode 与 span 一起包装,使其class具有test.

2)通过以下方式将样式直接(内联)应用于文本节点span

//after find the last row in the table, and it will add the new cell with the new textnode
    var cellLeft = row.insertCell(0);
    var el_span = document.createElement('span');
    el_span.setAttribute('style', 'color: red'); /*just an example, your styles set here*/
    var textNode = document.createTextNode(iteration);
    cellLeft.appendChild(el_span);
    el_span.appendChild(textNode);
}

无论哪种情况,您的appendStyle函数都可能被删除。

于 2012-01-05T17:48:30.377 回答