如果div包含文本,则更新另一个divs内容

时间:2018-08-30 10:15:13

标签: javascript jquery html magento

我有一个magento网站,我试图扫描表中的折扣代码,如果存在折扣代码,则更新表的另一部分。

我要尝试实现的代码如下:

    console.log("Discount Code Script Loaded");
$(function(){
    if($('#checkout-review-table-wrapper p').text().replace(/\W/g, '')=="NathanTest9856"){
        console.log("Found code");
        $('span.price p').html("£0.00");
        console.log("Shipping Total Corrected");
    } else{
        console.log("Coupon Code Not Found")
    }    
    console.log("Discount Code Script Completed");
});
console.log($('#checkout-review-table-wrapper p').text().replace(/\W/g, ''));

页面代码简化如下:

<body>
  <div id="checkout-review-table-wrapper">
    <p>
      Discount Code (NathanTest9856)
    </p>
  </div>
<span class="price">
  <p>
     £15.00
 </p>
</span>
</body>

这也可以在jsfiddle中找到:https://jsfiddle.net/nlangerdevcenturion/qu6bvrc0/35/

我似乎要面对的问题是,它无法在p标签中检测到NathanTest9856的折扣代码。

从以下错误中您可以看到:Uncaught TypeError: Cannot read property 'text' of null at centurion.js:12

2 个答案:

答案 0 :(得分:1)

问题是RegExp /\W/g。这将替换所有非单词字符(在这种情况下为空格),并且您将保留为 DiscountCodeNathanTest9856 ,该数字不等于 NathanTest9856

您可以改用这样的条件

/\(NathanTest9856\)/.test($('#checkout-review-table-wrapper p').text())

这将检查该段落的文本中是否存在(NathanTest9856)字符串。

答案 1 :(得分:1)

您可以使用jquery的:contains检查元素是否包含某些内容(在这种情况下为某些文本)。

更改:

if($('#checkout-review-table-wrapper p').text().replace(/\W/g, '')=="NathanTest9856"){

收件人:

if ($('#checkout-review-table-wrapper p:contains("NathanTest9856")')) {

更新的代码:

console.log("Discount Code Script Loaded");
$(function() {
  if ($('#checkout-review-table-wrapper p:contains("NathanTest9856")')) {
    console.log("**** Found code ****");
    $('span.price p').html("&pound;0.00");
    console.log("Shipping Total Corrected");
  } else {
    console.log("Coupon Code Not Found")
  }
  console.log("Discount Code Script Completed");
});
console.log($('#checkout-review-table-wrapper p').text().replace(/\W/g, ''));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
  <div id="checkout-review-table-wrapper">
    <p>
      Discount Code (NathanTest9856)
    </p>
  </div>
  <span class="price">
  <p>
     £15.00
 </p>
</span>
</body>

更新的小提琴:https://jsfiddle.net/qu6bvrc0/59/

或者,您可以在.text()上使用多种香草javascript方法,请参见此处以了解更多信息:https://stackoverflow.com/a/1789952/2181514

例如:

if ($('#checkout-review-table-wrapper p').text().indexOf("NathanTest9856")) >= 0) {