javascript setAttribute

时间:2010-07-22 11:18:20

标签: javascript

我正在使用javascript setAttribute跟随以下列方式将'lorem ipsum'更改为'come':

<span id="pop_title" name="pop_title" class="title01_mc10401 ff_1 fs_10 fc22 fsb">lorem ipsum</span>

脚本:

function modifyDOM(){
  var elem_pop = document.getElementById("pop_title");
  elem_pop.setAttribute("value","coming");
}

当我在firebug中检查时,它显示了value属性随即将添加,但它反映在浏览器中(我使用的是mozilla 3.0.5) 可能是什么问题?我需要设置不同的属性??

3 个答案:

答案 0 :(得分:2)

span元素没有value属性。请尝试改为设置innerHTML

elem_pop.innerHTML = "coming";

答案 1 :(得分:2)

有两种方法可以做到这一点(正确)。您可以在此处使用此跨浏览器方法:

elem_pop.appendChild( document.createTextNode('coming') );

另一种方法是使用elem_pop.textContent和/或elem_pop.innerText,但遗憾的是这些不适用于跨浏览器。 IE仅支持innerText,Firefox,Chrome仅支持textContent - Opera是唯一支持两者的。

您可以使用elem_pop.innerHTML,但是请注意innerHTML插入HTML标记,而不仅仅是文本到页面中。这意味着它不会将任何特殊字符转义为实体。它还会自动替换任何子节点,并可以销毁事件侦听器。

我建议使用第一个(appendChild())方法,但如果您想使用textContent/innerText,可以将其放在脚本的顶部:

HTMLElement.prototype.__defineGetter__('innerText', function(){ return this.textContent; });
HTMLElement.prototype.__defineSetter__('innerText', function(t){ this.textContent=t; });

这将为Firefox innerText提供支持,您可以随意使用它。

答案 2 :(得分:1)

在此处使用.innerHTML,如下所示:

function modifyDOM(){
  var elem_pop = document.getElementById("pop_title");
  elem_pop.innerHTML = "coming";
}

You can try it here。将value属性设置为<input>元素,当您想要替换元素标签中的html时,请改用.innerHTML