用星号javascript / jquery替换一个数字?

时间:2013-03-07 22:51:53

标签: javascript replace innerhtml

如何用javascript / jquery替换span元素中的文本或数字? 这就是我试过但控制台说“不能调用方法'替换未定义的”不明白什么是问题,有人能指出我正确的方向吗?

    function changeNumber()
{
    var element = document.getElementsByClassName("grade").innerHTML; 
    var x = element.replace('1','*');
    document.getElementsByClassName("grade").innerHTML=x;
}

如果重要的是我在javascript中动态创建的span元素......

3 个答案:

答案 0 :(得分:2)

document.getElementsByClassName("grade")返回NodeList,与getElementbyId不同,您需要循环播放。

如果你只有一个

function changeNumber()
{
    var element= document.getElementsByClassName("grade")[0];
    var text = element.innerHTML; 
    var x = text.replace('1','*');
    element.innerHTML=x;
} 

如果你有一套

function changeNumber()
{
    var elements= document.getElementsByClassName("grade");
    for (var i=0; i<elements.length; i++) {
        var element = elements[i];
        var text = element.innerHTML; 
        var x = text.replace('1','*');
        element.innerHTML=x;
    }
} 

答案 1 :(得分:0)

如果您的网页中已包含jQuery,并且对其使用感到满意,请尝试以下代码:

function changeNumber()
{
    $(".grade").each(function(){
        var self = this
        self.text(self.text().replace('1','*'))
    }); 
}

工作演示:http://jsfiddle.net/pratik136/uUHv8/

答案 2 :(得分:0)

虽然发布的答案是正确的,尽管你已经接受了答案,但我很有兴趣创建一个replace()函数来处理nodeList(或严格来说) - 说Object),所以:

Object.prototype.replace = function (n, r) {
    var textMethod = this[0] && this[0].textContent !== undefined;
    for (var i = 0, len = this.length; i < len; i++) {
        if (textMethod) {
            this[i].textContent = this[i].textContent.replace(n, r);
        } else {
            this[i].innerText = this[i].innerText.replace(n, r);
        }
    }
    return this;
};

document.getElementsByTagName('p').replace(/1/, '*');

JS Fiddle demo

我可以确认这适用于在Win XP下的Chrome 25,Firefox 19(也是14和18,在一段时间内没有更新计算机)。我不能在IE中测试,因为它和JS Fiddle,seem to be having issues

这也可能不是一个好主意;但是在我把它放在一起的时候它似乎很有用(而且相对有趣)。希望它可能有用。