如果在页面上找到文本,则隐藏按钮,但如果在页面上也找到此文本,则不隐藏按钮

Hide button if text found on page, but not if this text is also found on page

如果客户的购物篮中有 'session 1 of 5'、“5 个中的 2 个”、“5 个中的 3 个”或“5 个中的 4 个”,我有这个工作代码可以隐藏结账时的“下一步”按钮。因为我需要他们将所有 5 个会话添加到他们的购物篮中,然后他们才能单击“下一步”

我如何修改它的代码以同时检查页面是否包含 'session 5 of 5',因此不添加 class“hideElement”

当他们在结帐系统中导航时,是否也可以每隔几秒连续生成此代码 运行?

var itemCode = ["session 1 of 5", "session 2 of 5", "session 3 of 5", "session 4 of 5"];

var contains = itemCode.some(function(code) {
  return $(".bookly-cart-step").text().indexOf(code) >= 0;
});

if (contains) {
  $(".bookly-next-step").addClass("hideElement");
}

这通常是您可以直接与购物车逻辑集成的东西,但看起来您正在使用插件,所以我猜这在您的特定情况下是不可能的,因此您的问题。

下面的代码片段将让您了解如何使用 every 数组方法和相应的 disable/enable 提交按钮检查所有会话是否存在(通过与类似文本内容进行比较)时尚作为你的原创剧本)。

虽然如果你能直接对照篮子,我不建议对照文本内容。

const sessions = ['session 1', 'session 2', 'session 3']
const searchTarget = document.querySelector('.target');
const submitButton = document.querySelector('.submit')

if (searchTarget.textContent.includes('session')) {
  if (!sessions.every((session) => searchTarget.textContent.includes(session))) {
    submitButton.setAttribute("disabled", "")
  } else {
    submitButton.removeAttribute('disabled')
  }
}
<div class="target">session 1</div>
<button class="submit">test</button>

就添加 re-checking 而言,当用户完成与购物车相关的操作时,您最好只调用检查函数,为此您可以使用 event listener

如果这不可能,您可以使用 mutation observer to check for the text changes, or use setInterval 作为最后的手段,因为这可能会开始影响性能。