替换文本javascript字符串

时间:2013-09-16 09:16:33

标签: javascript

我试图替换另一个文本字符串,这里是我的代码加上js小提琴

HTML

<div class="label">Rating:</div>
<div class="data rating">****</div>

的Javascript

var str=document.getElementsByClassName("data" ,"raiting").innerHTML; 
var n=str.replace(/\*/g,"star");
document.getElementsByClassName("data", "raiting").innerHTML=n;

演示

http://jsfiddle.net/sgGQz/1/

3 个答案:

答案 0 :(得分:5)

顾名思义,

document.getElementsByClassName()方法返回一个元素集合(HTMLCollection),而不是单个集合 - 即使DOM中只有一个具有给定类名的元素。

你需要仔细检查每一个才能做出这样的替换。例如:

var elements = document.getElementsByClassName("data rating");
for (var i = 0, l = elements.length; i < l; i++) {
  elements[i].innerHTML = elements[i].innerHTML.replace(/\*/g, 'star');
}

JSFiddle

或者,如果您确定只有一个元素,则可以直接指定:

var elementToAdjust = document.getElementsByClassName("data rating")[0];
// ...

答案 1 :(得分:1)

如果您只有一次出现这个元素,那么这将起作用:

var str=document.getElementsByClassName("data rating")[0].innerHTML; 
var n=str.replace(/\*/g,"star");
document.getElementsByClassName("data rating")[0].innerHTML=n;

如果存在多个data rating元素,请使用:

    var elems =document.getElementsByClassName("data rating");
    for(var i = 0; i < elems.length; i++){
        elems[i].innerHTML = elems[i].innerHTML.replace(/\*/g,"star");
    }

这两种方法都纠正了原始代码中的一些缺陷。

首先,在传递给getElementsByClassName的参数中,评分拼写错误。其次,getElementsByClassName()使用由空格分隔的类名来选择具有多个类的元素,而不是多个参数。获取elementsByClassName返回必须迭代的元素数组。

JS小提琴: http://jsfiddle.net/sgGQz/5/

答案 2 :(得分:0)

你需要再次检查getElementsByClassName,它返回node-List,所以你可以这样做,你可以在每个元素之后循环然后设置你的值

var str=document.getElementsByClassName("data" ,"raiting")[0].innerHTML; 
var n=str.replace(/\*/g,"star");
document.getElementsByClassName("data", "raiting")[0].innerHTML=n;

这是example因为你只有一次出现