2011-06-23 63 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/