【问题标题】:Find and replace HTML text with javascript用 javascript 查找和替换 HTML 文本
【发布时间】:2016-06-09 01:41:14
【问题描述】:

使用所见即所得类型的网页创建器链接到各种数据库以从客户端服务器中提取信息。

一个变量是频率,有三个可能的输出,MO,YR,或者它是空白的。

这是我的一个地方的 HTML(这可以出现多次,只需将 1 换成下一个数字)

<span style="font-size:24px;"><strong>$@@1_Price</strong></span><span style="font-size:18px;" class="rateFrequency">@@1_rateFrequency</span>

我正在寻找使用 javascript 将 MO 或 YR 替换为 /month 和 /year 并且在填充空白时什么都不做。

对javascript的了解不多,所以不知道从哪里开始。正在考虑类似的事情,但不确定我是否朝着正确的方向前进或从这里前进

<script>
  window.onload=function change() {
      var frequency = document.getElementsByClassName("rateFrequency");
      if (condition1) {
          block of code to be executed if condition1 is true
      } else if (condition2) {
          block of code to be executed if the condition1 is false and condition2 is true
      } else {
          block of code to be executed if the condition1 is false and condition2 is false
      }
  }
change();
</script>

任何能帮助我前进的东西都会很棒。谢谢!

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    假设我正确理解了您的要求,无论 HTML 文档中有多少个“rateFrequency”跨度,以下代码都可以解决问题。

    window.onload = function(e) {
    
      function changeFreq() {
        var els = document.getElementsByClassName("rateFrequency"),
        len = els.length;
        while (len--){
          els.item(len).innerText = els.item(len).innerText.replace('MO', '/month').replace('YR', '/year');
        }
      }
    
      changeFreq();
    };
    

    这里不需要if。如果跨度中包含的文本是 'MO',第一个 replace 将用 '/month' 替换它,第二个替换不会做任何事情。如果 span 中包含的文本是 'YR',则第一个 replace 不会做任何事情,第二个 replace 将用 '/year' 替换它。如果 span 中的文本不是“MO”或“YR”,replace 将不会做任何事情,并且 span 中的文本将保持不变。

    【讨论】:

    • 我认为他有一组未知的跨度。所以解决方案很好,但你必须循环。
    • 谢谢,你是对的。当我第一次阅读它时,我错过了这个问题。现在将调整代码。
    • 还有什么我需要让它发挥作用吗?我尝试将它粘贴到我的脚本部分,但没有运气,我也将它与 window.onload 一起输入,但没有运气。编辑:没关系,将其添加到页面底部而不是顶部并且现在正在工作。非常感谢!
    • 我会更新它,以便在 window.onload() 上调用它
    【解决方案2】:

    我制作了codepen给你看看。它使用 jquery,我建议你使用它,因为它很棒!

    如果您有任何问题,请告诉我: Example

    $(document).ready(function(){
     $.each($('.rateFrequency'),function(){
        frq = $(this).text();
        if (frq=='MO'){
         console.log('REPLACE MONTH');
         $(this).text('/month');
        }else if(frq=='YR'){
         console.log('REPLACE YEAR');
          $(this).text('/year');
        }
      }) 
    })
    

    【讨论】:

    • 投反对票原因:最初的问题要求使用 javascript 解决方案,而您提供了一个依赖于 jQuery 的解决方案。
    • 很公平。我这样做是因为他说他对 javascript 很陌生,所以我认为向他展示那里的内容是可以的。我接受反对票。 (也感谢您指定原因)。
    • 我很欣赏 jquery 的响应,如果我不使用所见即所得的平台,我会全力以赴。但是在这种工作环境中添加直接的javascript更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多