2013-03-07 61 views
0

如何用javascript/jquery替换span元素中的文本或数字? 这是我曾尝试,但控制台说“不能调用方法”取代'未定义“不明白最新的问题,有人可以指出我在正确的方向吗?用星号代替javascript/jquery?

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

如果它的事项我在JavaScript动态创建的span元素...

回答

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

不明白你的意思是什么,我试着给更多的数字加上更多的变量2,**等等,直到5,但它仍然只是创建一个一号球星......我该怎么办需要放入循环以使其更改批次数量来满足星星的数量? – spovell 2013-03-08 15:04:00

+0

或者我是否真的需要创建5个函数来将5个不同的数字转换为星号? – spovell 2013-03-08 15:07:53

0

如果你已经包含在你页面的jQuery,并且是舒服的使用,请尝试以下代码:

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

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

+0

不错,谢谢!不要感到舒服,但任何一个,但jQuery的看起来很有前途:) – spovell 2013-03-07 23:26:04

+0

我怎么可以添加更多的数字循环,说我想转换1-5数量的星星数量1-5? – spovell 2013-03-08 14:32:14

+1

在每个人回答您的第一个问题后,没有什么可以改变问题的。收到答案并提出一个新问题。 – epascarello 2013-03-08 15:25:20

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

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