-2

我在标签中有一些文本<span></span>,我想在页面加载时将这些文本更改为其他内容。

因此,可以说默认文本是“故事”(由某些 CMS 系统输出,我无法编辑它)。因此,当页面加载时,.js 会检测到“故事”一词并将其替换为“查看此故事”。

这有可能吗?

干杯

更新:我在询问之前进行了搜索,但我发现的这些方法都不起作用。就像我说的文本是由 CMS 输出的并且它给出了错误的标题,标题本身不能通过 CMS 编辑,因为它用于其他术语和正确的标记,所以我正在寻找 js 解决方法来在页面加载时重命名它。

并且 span 没有 ID,我不能给它任何 ID,因为就像我说的那样,它按照 CMS 的设计工作。

<div class="views-row views-row-1 views-row-odd views-row-first active">
  <div class="views-field views-field-name">
    <span class="field-content">Story</span>
  </div>
</div>
<div class="views-row views-row-2 views-row-even">
  <div class="views-field views-field-name">
   <span class="field-content">Second Story</span>
  </div>
</div>

如您所见,跨度没有 ID,但只有重复类。

4

5 回答 5

2

根据 OP 要求更新

您可以替换跨度内的任何文本。您甚至可以使用正则表达式来使其更灵活,但我们暂时先保留它:

本机 Javascript

var lookupSpanAndReplace = function(textFrom, textTo) {
   var spans = document.getElementsByTagName('span');

   for (i=0; i<spans.length; i++) 
      if (spans[i].innerHTML.indexOf(textFrom) >= 0)
          spans[i].innerHTML = mySpan.innerHTML.replace(textFrom, textTo);
}

lookupSpanAndReplace("Story", "My New Text");

jQuery

var lookupSpanAndReplace = function(textFrom, textTo) {
    $('span:contains(' + textFrom + ')').each(function(index, element) { 
        $(element).text($(element).text().replace(textFrom, textTo));
    });
}

lookupSpanAndReplace("Story", "My New Text");
于 2013-10-01T16:29:27.880 回答
1

尝试

$('#spanID').text("View This Story");

或者如果你想替换部分文本

$('#spanID').text(function () {
    return this.innerHTML.replace('Story', 'View This Story');
});
于 2013-10-01T16:29:05.663 回答
0

使用以下方法解决问题

HTML 代码:

<html>
<head>
    <script>
        function replace_text_span()
        {
         for(i=0;i<document.getElementsByTagName('span').length;i++)
         {
          document.getElementsByTagName('span')[i].innerHTML=document.getElementsByTagName('span')[i].innerHTML.replace("Story","View This Story");
         }
        }
    </script>
    <style>
    </style>
</head>
<body onload="replace_text_span()">
    <div class="views-row views-row-1 views-row-odd views-row-first active">
      <div class="views-field views-field-name">
        <span class="field-content">Story</span>
      </div>
    </div>
    <div class="views-row views-row-2 views-row-even">
      <div class="views-field views-field-name">
       <span class="field-content">Second Story</span>
      </div>
    </div>
</body>
</html>
于 2013-10-01T18:17:46.153 回答
0
<script>
function changeSpan(){
   var spans = document.getElementsByTagName ("span");
   for (i = 0; i < spams.length; i++){
      spans[i].innerHTML = textThatYouWant ();
   }
}

</script>

<head onload="changeSpan()" >
   <tile> ... </title>
</head>
<body>
...
</body>
于 2013-10-01T16:37:36.830 回答
0

给你span一个 ID,然后text([your new text])在那个节点上运行:

HTML

<span id="mySpan">Story</span>

jQuery

$('#mySpan').text("View This Story");

JSFiddle 与 jQuery

或者你可以在没有 jQuery 的情况下做到这一点:

document.getElementById("mySpan").innerHTML = "View This Story";

JSFiddle 与普通的 'ol Javascript

于 2013-10-01T16:29:44.660 回答