首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript setAttribute

javascript setAttribute
EN

Stack Overflow用户
提问于 2010-07-22 19:18:20
回答 3查看 5.6K关注 0票数 1

我使用javascript setAttribute进行如下操作,将'lorem ipsum‘改为'coming’:

代码语言:javascript
复制
<span id="pop_title" name="pop_title" class="title01_mc10401 ff_1 fs_10 fc22 fsb">lorem ipsum</span>

脚本:

代码语言:javascript
复制
function modifyDOM(){
  var elem_pop = document.getElementById("pop_title");
  elem_pop.setAttribute("value","coming");
}

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

EN

回答 3

Stack Overflow用户

发布于 2010-07-22 19:20:20

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

代码语言:javascript
复制
elem_pop.innerHTML = "coming";
票数 2
EN

Stack Overflow用户

发布于 2010-07-22 19:53:34

有两种方法可以(正确地)做到这一点。你可以在这里使用这种跨浏览器的方法:

代码语言:javascript
复制
elem_pop.appendChild( document.createTextNode('coming') );

另一种方法是使用elem_pop.textContent和/或elem_pop.innerText,但不幸的是它们不能跨浏览器工作。IE只支持innerText,火狐,Chrome只支持textContent - Opera是唯一一个同时支持两者的浏览器。

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

我推荐第一种(appendChild())方法,但是如果你想使用textContent/innerText,你可以把下面的代码放在脚本的顶部:

代码语言:javascript
复制
HTMLElement.prototype.__defineGetter__('innerText', function(){ return this.textContent; });
HTMLElement.prototype.__defineSetter__('innerText', function(t){ this.textContent=t; });

这将给予火狐innerText支持,你可以随心所欲地使用它。

票数 2
EN

Stack Overflow用户

发布于 2010-07-22 19:20:09

在这里使用.innerHTML,如下所示:

代码语言:javascript
复制
function modifyDOM(){
  var elem_pop = document.getElementById("pop_title");
  elem_pop.innerHTML = "coming";
}

You can try it here。设置value属性类似于<input>元素,当您想要替换元素标记中的html时,请使用.innerHTML

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3308228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档