javascript-单击时隐藏div信息

时间:2018-06-19 18:34:21

标签: javascript jquery html show-hide

我有一个分为3个类别的滑块产品列表。单击产品时,将显示产品说明。当您单击新产品时,旧产品说明将隐藏,而新产品说明将出现。

我的问题是,当您更改类别时,我希望关闭上一个说明,因此在您单击新产品之前,不会显示任何说明。当前,产品描述仍显示最后一个类别中的最后一个产品,直到单击新产品为止。

我试图为此部分编写JavaScript,但是失败了。有人可以帮忙吗?

javascript(前10行是工作代码):

function product(x) {
  document.querySelectorAll('.hidden').forEach(function(el){
    el.style.display = "none";
  });
  if (x.style.display === "block") {
    x.style.display = "none";
  } else {
    x.style.display = "block";
  }
}

var anav = document.querySelector('#navsliderselector');
var divprod = document.querySelector('.hidden');
button.addEventListener('click', function (event) {
      if (menu.style.display == "") {
          menu.style.display = "none";

      } else {
          menu.style.display = "";

      }
    }
  );

这是HTML:

<ul>
                <li><button onclick="product(product1info)"><h4>Knee Brace L1843</h4></button></li>
                <li><button onclick="product(product2info)"><h4>Wrist Brace L3807</h4></button></li>
                <li><button onclick="product(product3info)"><h4>Wrist Brace</h4></button></li>
                <li><button onclick="product(product4info)"><h4>Ankle Brace L1005</h4></button></li>
                <li><button onclick="product(product5info)"><h4>Back Brace L0650</h4></button></li>
              </ul>

              <ul>
                <li><button onclick="product(product6info)"><h4>Back Brace L0650</h4></button></li>
              </ul>
               <ul>
                <li><button onclick="product(product7info)"><h4>Back Brace L0650</h4></button></li>
              </ul>

    <nav>
                <a href="#" id="navsliderselector">Braces</a>
                <a href="#" id="navsliderselector">Mobility</a>
                <a href="#" id="navsliderselector">Incontinence</a>
              </nav>

              <div id="product1info" class="hidden">
                    <h2>Knee Brace L1843</h2>
                    <p>Product Info</p>
                </div>

                <div id="product2info" class="hidden">
                    <h2>Wrist Brace L3807</h2>
                    <p>Product Info</p>
                </div>

                <div id="product3info" class="hidden">
                    <h2>Wrist Brace</h2>
                    <p>Product Info</p>
                </div>

                <div id="product4info" class="hidden">
                    <h2>Ankle Brace L1005</h2>
                    <p>Product Info</p>
                </div>

                <div id="product5info" class="hidden">
                    <h2>Back Brace L0650</h2>
                    <p>Product Info</p>
                </div>

2 个答案:

答案 0 :(得分:1)

我相信您为所有onclicks错误编写了积函数。

您用函数名称中包含的数字编写所有onclick函数:

<li><button onclick="product1()"><h4>Knee Brace L1843</h4></button></li>

根据您给定的代码,没有其他产品函数带有数字,这就是问题所在。

由于您的乘积函数采用参数x并修改了它的显示,所以我认为您应该将元素本身传递给参数

所以代替这个:

<li><button onclick="product1()"><h4>Knee Brace L1843</h4></button></li>

您应该这样写:

<li><button onclick="product(this)"><h4>Knee Brace L1843</h4></button></li>

编辑:

对不起,我似乎误解了这个问题。如果您的目的是每次客户选择新产品类别时都清除所有产品说明,则:

您可以简单地创建一个新的onclick函数来清除所有描述(我将使用您对产品函数所做的实现):

function clearAllDescriptions(){
  document.querySelectorAll('.hidden').forEach(function(el){
    el.style.display = "none";
  });
}

,然后将其分配给导航类别:

<a href="#" onclick="clearAllDescriptions()" id="navsliderselector">Braces</a>
<a href="#" onclick="clearAllDescriptions()" id="navsliderselector">Mobility</a>
<a href="#" onclick="clearAllDescriptions()" id="navsliderselector">Incontinence</a>

答案 1 :(得分:0)

getUserDetails(uuid).then(function(data){
   console.log(data); 
});
function product(x) {
  $('.productDescr').hide();
  $('.productDescr[product=' + x + ']').fadeIn("fast");
}

$(document).ready(function() {
  $(document).on("click", ".categoryLink:not(.active)", function() {
    $('.categoryLink.active').removeClass("active");
    $(this).addClass("active");
    var categSel = $(this).attr("category");
    $('.categoryProducts').hide();
    $('.categoryProducts[category=' + categSel + ']').fadeIn("fast");
    $('.productDescr').hide();
  });
});
.productDescr {
display:none
}
.categoryLink {
display:inline-block;
padding:3px 5px;
background-color:lightgray;
border-radius:6px;
cursor:pointer
}
.categoryLink.active {
background-color:#07c;
color:white
}