切换css样式/div可见性的按钮?

时间:2018-06-21 作者:Jon Fergus

我试图确定是否可以添加一个按钮来切换css样式。我想从这样的事情开始:

add_action (\'woocommerce_before_cart\' , \'cart_multi_step_buttons\' , 2 );
function cart_multi_step_buttons() {
?>
<button class="cart-multi-step-button-1" onclick="cart_ms-1()">
    Step 1
</button>
<script>
function cart_ms-1() {
    var x = document.getElementsByClassName("cart_totals");
    if (x.style.display === "none") {
        x.style.display = "block";
    }
    else {
        x.style.display = "none";
    }
    }
</script>
<?php
}
因此,当cart页面加载到我的woocommerce商店时,会有一个按钮来切换cart totals div的可见性(主要思想是开发一种简单的方法,将cart页面转换为多步骤流程,无需大量模板工作)。但这似乎不起作用。

我还认为,也许可以修改这个按钮,使每个按钮都与一小段css代码相关联,点击后,这些代码要么被激活,要么不被激活,但我不确定如何进行。

关于以下方面的任何建议:1)如果不编辑woo模板,这种事情是否可能发生;2)如果可能,我需要在代码中更改什么才能使其正常工作。

提前感谢您的帮助/指点。

1 个回复
最合适的回答,由SO网友:D. Dan 整理而成

这个getElementsByClassName, 顾名思义,返回元素的集合,即数组,因此x.style.display 行不通。x[0].style.display 将适用于它找到的第一个元素。但由于这是Wordpress,默认情况下加载Jquery,因此您可以使用:

jQuery(\'.cart-multi-step-button-1\').click(function(){
    jQuery(\'.cart_totals\').css({
      \'background\': \'red\',
      \'display\': \'none\',
    });
  });
您还可以使用jQuery切换类,并自己添加css:

jQuery(\'.cart_totals\').toggleClass(\'active\');
css:

.cart_totals.active{
  background: red;
  display: none;
}

结束