2013-03-07 69 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

它也可能不是一個好主意;但在我把它放在一起的時候它似乎很有用(並且相對有趣)。希望它可能有一些用處。