2011-06-23 64 views
0

我試圖更改鏈接的名稱,但是,我有一些限制。該鏈接被放置在代碼中,如下所示:Javascript - 鏈接名稱更改有限制

<li class='time'> 
<a href="#time">Review Time</a> 
<img alt="Styled" src="blah" /> 
</li> 

基本上,我有一個類名可以使用。我不允許在這些行中編輯任何內容,並且我只有一個頁眉/頁腳來編寫Javascript/CSS。我試圖獲得審閱時間顯示爲時間審閱,例如。

我知道我可以通過在CSS中使用.time {display:hide}來隱藏它,但我無法找出替換文本的方法。如圖所示,文本也是一個鏈接。我已經嘗試了各種替換函數,例如JS,但是我要麼做錯了,要麼不起作用。

任何幫助,將不勝感激。

+0

你可以使用jQuery? – locrizak

+1

這個作業或工作申請? – epascarello

回答

0

拆分空間上的單詞,顛倒順序,放回原處。

var j = $('li.time > a'); 
var t = j.text(); 
var a = t.split(' '); 
var r = a.reverse(); 
j.text(r.join(' ')); 

這可能會在多語言環境中產生一些令人討厭的後果。

+0

他沒有提到使用jQuery ... – kei

+0

然後,我想我們可以替換適當的javascript選擇。真的不會改變邏輯。我只是不想寫超過需要,我相信如果jQuery不可用,他可以找到另一種選擇方法。 – aepheus

+0

代碼中存在一個錯誤,因爲它不適用於多個'li.time'。這是更好的:'$('li.time> a')。text(function(){return $(this).text()。split('').reverse()。join('');}) ;'。 – Tomalak

1

您可以獲取具有您正在查找的類名的li的子元素,然後更改您找到的定位標記的innerHTML。

例如:

var elements = document.getElementsByClassName("time")[0].getElementsByTagName("a"); 

    for(var i = 0, j = elements.length; i<j; i++){ 
     elements[i].innerHTML = "Time Review"; 
    } 

當然,這個假設存在一個名爲「時間」頁面上的一個元素。您還需要注意檢查空值。

+0

完美地工作;謝謝! – Kris

0

老同學的JavaScript:

function replaceLinkText(className, newContents) { 
    var items = document.getElementsByTagName('LI'); 
    for (var i=0; i<items.length; i++) { 
    if (items[i].className == className) { 
     var a = items[i].getElementsByTagName('A'); 
     if (a[0]) a[0].innerHTML = newContents; 
    } 
    } 
} 

replaceLinkText("time", "Review Time"); 

需要注意的是現代瀏覽器都支持getElementsByClassName(),這可以簡化事情有點。

0

可以遍歷DOM和修改與以下JavaScript文字:

var li = document.getElementsByClassName('time'); 
for (var i = 0; i < li.length; i++) { 
    li[i].getElementsByTagName('a')[0].innerText = 'new text'; 
} 

演示:http://jsfiddle.net/KFA58/