当前位置: 首页 > 知识库问答 >
问题:

基于类名替换HTML元素?

姚智
2023-03-14

我的任务是取代电话号码与一个锚标签与链接和文本到我们的网站演示页。我们使用白标软件,它不允许我简单地更改文本,因为它链接到后端面板,你可以在那里更改电话号码,但你不能更改它为其他任何东西。

电话号码所在的代码段如下:

<div>
    <div class="col-xs-12">
        <p class="h6 margin-top-sm margin-bottom-sm text-center-xs">
            <i class="fa fa-phone margin-right-xs"></i>
            <strong class="hidden-xs">Call us now:</strong>
            <a class="text-info" href="tel:IRL +353 0000000 UK +44 00000000"><strong>IRL +353 00000000 UK +44 00000000</strong></a>
            <span class="margin-left-sm margin-right-sm text-gray-dark">|</span>
            <i class="fa fa-commenting-o margin-right-xs"></i>
            <a href="/contact-us" class="text-black"><strong>Contact Us</strong></a>
            <span class="margin-left-sm margin-right-sm text-gray-dark header-vertical-line">|</span>
            <i class="fa fa-question-circle-o margin-right-xs"></i>
            <a href="/faq" class="text-black">
                <strong class="hidden-xs">Check our FAQ</strong>
                <strong class="visible-xs-inline">FAQ</strong>
            </a>
        </p>
    </div>
</div>

我需要保留到FAQ和联系人页面的链接,但要去掉这个:

<strong class="hidden-xs">Call us now:</strong>
<a class="text-info" href="tel:IRL +353 0000000 UK +44 00000000"><strong>IRL +353 00000000 UK +44 00000000</strong></a>

并将其改为:

<a href="/demo">Book A Demo</a>

而不会改变网页上的任何其他内容或干扰网页上的任何其他内容。

我试图使用innerhtml.replace()来尝试它,但它不起作用。有人有什么建议吗?

我的尝试:

$(".col-xs-12").each(function(){ 
    $("strong", this).each(function(i,obj){ 
        if (i===0) { 
            $(this).html(""); 
        } else if(i === 1) { 
            var newHtml = '<a href="safetyfreelancer.com/demo">Book A Demo</a>'; 
            $(this).html(newHtml); 
         } 
     });
 });

共有2个答案

魏烨熠
2023-03-14

您可以使用parentNode的replaceChild替换锚点,也可以使用removeChild删除立即调用我们文本。

null

function replaceCallUs() {
  const callUsElm = document.querySelectorAll("a[href^='tel']")[0];

  // Remove the `Call us now` text
  let callUsText = callUsElm.previousSibling;
  // // find the text element
  while(callUsText && callUsText.nodeType !== 1) {
    callUsText = callUsText.previousSibling;
}
 callUsText && callUsElm.parentNode.removeChild(callUsText);
 
  // Replace the call us anchor this the demo link
  var myLink = document.createElement("a");
  myLink.innerHTML = "Book A Demo";
  myLink.setAttribute('href', '/demo');
  
  callUsElm.parentNode.replaceChild(myLink, callUsElm);  

}

replaceCallUs();
<div>
    <div class="col-xs-12">
        <p class="h6 margin-top-sm margin-bottom-sm text-center-xs">
            <i class="fa fa-phone margin-right-xs"></i>
            <strong class="hidden-xs">Call us now:</strong>
            <a class="text-info" href="tel:IRL +353 0000000 UK +44 00000000"><strong>IRL +353 00000000 UK +44 00000000</strong></a>
            <span class="margin-left-sm margin-right-sm text-gray-dark">|</span>
            <i class="fa fa-commenting-o margin-right-xs"></i>
            <a href="/contact-us" class="text-black"><strong>Contact Us</strong></a>
            <span class="margin-left-sm margin-right-sm text-gray-dark header-vertical-line">|</span>
            <i class="fa fa-question-circle-o margin-right-xs"></i>
            <a href="/faq" class="text-black">
                <strong class="hidden-xs">Check our FAQ</strong>
                <strong class="visible-xs-inline">FAQ</strong>
            </a>
        </p>
    </div>
</div>
季博
2023-03-14

在本例中,问题是使用jQuery选择器并将它们与锚标记一起使用。你可以在这里找到更多关于他们的信息。

选择定位标记时,请使用$('a[href^=“tel”]'),这将选择具有以tel开头的href的所有定位标记。这样,您将只选择那些包含电话号码的。然后你可以用任何方式操纵它。

$('a[href^="tel"]').each(function(index, anchor) {
  $(anchor).prev('strong.hidden-xs').remove();
  $(anchor).html('book a demo');
  $(anchor).prop('href', '/demo');
});
 类似资料:
  • 本文向大家介绍html元素哪些标签是不可替换元素?哪些是可替换元素?相关面试题,主要包含被问及html元素哪些标签是不可替换元素?哪些是可替换元素?时的应答技巧和注意事项,需要的朋友参考一下 (replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。也就是说,css 可以影响元素但是不能影响其内容的显示。 可替换元素: …

  • 问题 你需要使用命名实体来替代 HTML 标签: <br/> => &lt;br/&gt; 解决方案 htmlEncode = (str) -> str.replace /[&<>"']/g, ($0) -> "&" + {"&":"amp", "<":"lt", ">":"gt", '"':"quot", "'":"#39"}[$0] + ";" htmlEncode('<a hr

  • 问题内容: 如何替换ajax响应中的html元素?我所知道的是删除元素,如何用ajax响应替换已删除的标签?例如: 我有这样的代码: 当我单击一个按钮时,对codeginter控制器进行了ajax调用,在这里我接收到从数据库中提取并在另一个视图中呈现的新数据,该视图从ul开始并在ul结束时结束。 在ajax成功函数中,我这样做: 问题答案: 您可以使用replaceWith(请参阅:http :/

  • 我正在尝试访问HTML代码中特定的元素。 定义元素的代码部分如下所示 。 在下面的第二行代码之后,我尝试声明表达式和,它们都返回java.lang.String类型的“oddrow cellcont” 但是,我尝试了下面的代码片段,它不能工作,因为循环中的条件返回false。我还尝试使用和、、、...以所有可能的组合使用if条件。 我肯定被困住了;我需要帮助。

  • 我有一个样式规则,当一个标记有两个类时,我想应用于它。在没有JavaScript的情况下,有什么方法可以执行此操作吗?换句话说: 只有在同时应用了和类时,我才要应用我的样式规则。

  • 问题内容: 我刚刚完成了从数据库中剥离HTML实体的任务,因为我们进行了很多爬网,并且某些爬网程序在输入时没有这样做:( 因此,我开始编写一堆看起来像这样的查询; 显然,这是一种非常幼稚的方法。我一直在尝试找出解码功能是否可以做些聪明的事情。也许通过正则表达式抓住HTML实体一样,然后通过 刚刚 的部分到ASCII解码器,以及重建串…或东西… 我可以按查询继续吗?其中可能只有40个左右。 问题答案