在createTextNode()之后更改字体

时间:2011-04-05 08:24:15

标签: javascript html dom

我需要更改createTextNode()函数创建的元素的字体:

var s = document.createTextNode(item.text);
s.setAttribute("font size") = -1;
elem.appendChild(s);

在我的代码中,我在Firebug上收到错误:

  

s.setAttribute不是函数

如何更改已创建元素的字体?

3 个答案:

答案 0 :(得分:10)

您没有在文本节点上指定字体,在父元素上执行此操作 - 在您的情况下:

elem.style.fontSize = "20px";

如果您不想更改整个父元素的字体大小,可以创建一个<span>元素来环绕文本节点:

var span = document.createElement('span');
span.style.fontSize = "20px";
span.appendChild(s);
elem.appendChild(span);

答案 1 :(得分:1)

createTextNode创建一个只有一个方法的Text节点:splitText。 setAttribute是DOM Core的一种方法,由Element接口实现(即不是文本节点)。

通常,你应该避免使用setAttribute,因为它有很多怪癖,并且设置相关的DOM属性更快更可靠。

在任何情况下,HTML 4.01中都没有为文本节点指定“fontSize”属性,因此您不能指望浏览器实现它。文本节点从其父元素继承它们的样式,因此如果要设置某些文本的字体大小,请将其包装在元素中:

window.onload = function() {
  var span = document.createElement('span');

  // Set DOM property
  span.style.fontSize = '200%';
  span.appendChild(document.createTextNode('hey'));

  // Add to document
  document.body.appendChild(span);
};

但总的来说,最好定义一个类中的样式并将其附加到span。

答案 2 :(得分:0)

也许你可以使用内联css。从未尝试使用textnode

setAttribute('style', 'font-size:-1;');