将数字替换为星号javascript/jquery

replace a number with star sign javascript/jquery?

本文关键字:javascript jquery 数字 替换      更新时间:2023-09-26

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

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

如果关系到span元素是在javascript中动态创建的…

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;
    }
} 

如果您的页面中已经包含了jQuery,并且熟悉它的用法,请尝试以下代码:

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

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

虽然发布的答案是正确的,尽管您已经接受了答案,但我对创建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.

我可以确认这适用于Chrome 25, Firefox 19(也是14和18,没有更新这个电脑一段时间)在Win XP下。我不能在IE中测试,因为它和JS Fiddle似乎有问题。

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