我需要在结帐页面上隐藏税价div。 我在checkout.html中添加了javascript代码,但未在控制台中找到元素并发生错误。 似乎javascript在元素加载之前运行。 如果我在控制台上运行脚本,则效果很好。 如何解决呢? 我添加了整个checkout.html文件。 我在html文件的末尾添加了脚本。
{{#partial "head"}}
{{{ checkout.checkout_head }}}
{{{ stylesheet '/assets/css/optimized-checkout.css' }}}
{{ getFontsCollection }}
<script type="text/javascript">
window.language = {{{langJson 'optimized_checkout'}}};
</script>
{{{head.scripts}}}
{{/partial}}
{{#partial "page"}}
<header class="checkoutHeader optimizedCheckout-header">
<div class="checkoutHeader-content">
<h1 class="is-srOnly">{{lang 'checkout.title'}}</h1>
<h2 class="checkoutHeader-heading">
<a class="checkoutHeader-link" href="{{urls.home}}">
{{#if checkout.header_image}}
<img alt="{{settings.store_logo.title}}" class="checkoutHeader-logo" id="logoImage" src="{{ checkout.header_image }}"/>
{{ else }}
<span class="header-logo-text">{{settings.store_logo.title}}</span>
{{/if}}
</a>
</h2>
</div>
</header>
<div style="text-align:center;padding:4px;color: #ff0000;font-size:14px;">Sales tax will be removed during step 2 for all states, except PA, TX & WA.</div>
{{{ checkout.checkout_content }}}
{{{ footer.scripts }}}
{{/partial}}
{{> layout/empty}}
***<script type="text/javascript">
document.querySelector('[data-test="cart-taxes"]').style.display = "none";
</script>***
答案 0 :(得分:2)
“优化的一页检出”的手风琴布局会分阶段加载,因此您是正确的-您的JS在目标元素存在之前就已运行。您可以间隔运行代码,但是更好的解决方案是使用类似Mutation Observer的工具来监视DOM中的更改。
以下是开箱即用的使用突变观察者的教程: http://ryanmorr.com/using-mutation-observers-to-watch-for-element-availability/
但是您也可以查看这个包装器库,它消除了使用MO的许多复杂性:https://github.com/uzairfarooq/arrive
但是要以稍微不同的方式回答您的问题,为什么不使用CSS隐藏购物车税项目呢?这样,您不必担心观看DOM:
<style>
.cart-priceItem:nth-child(5) {
display: none;
}
</style>