Javascript - 隐藏和调用特定 "Div"时出错(调用特定 div - onchange)

标签 javascript html

我有一个下拉框来列出 2015/2016 年。每个都以 div 的形式提供,其下方有(每月和每周)的单选按钮。

如果我在下拉列表中选择 2015 年 - 应查看 2015 年每月和每周。 2016 年也是如此。

我的问题是,两个年份的 div 在同一页面中一起查看。 有人可以给个建议吗?感谢您的时间和帮助。

我的 JS 代码:

<!DOCTYPE html>
<html>
  <body>
    <select  class="dropdown"  id="year" name="year" size="1" onchange="changeDiv('year');">
      <option value="2015" selected="selected">2015</option>
      <option value="2016">2016</option> 
    </select>

    <div id="2015">
      <B>AAAAAAA</B>
      <input type="radio"   checked="checked" onclick="javascript:changeDiv('2015Monthly');" />Monthly
      <input type="radio" onclick="javascript:changeDiv('2015Weekly');" align="left" />Weekly

      <div id="2015Monthly" ><B>2015 - Monthly</B></div>
      <div id="2015Weekly" ><B>2015 - Weekly</B></div>

      <div id="2016">
        <B>HHHHHHH</B>
        <input type="radio"  checked="checked" onclick="javascript:changeDiv('2016Monthly');" />Monthly
        <input type="radio" onclick="javascript:changeDiv('2016Weekly');" />Weekly
        <div id="2016Monthly" ><B>2016 - Monthly</B></div>
        <div id="2016Weekly" ><B>2016 - Weekly</B></div>
        <script>
          function changeDiv(divId)
          {
            if(divId=='2015Monthly')
            {
              document.getElementById(divId).style.display="block";
              document.getElementById('2015Weekly').style.display="none";
            }else if(divId=='2015Weekly')
            {
              document.getElementById(divId).style.display="block";
              document.getElementById('2015Monthly').style.display="none";
            }else if(divId=='2016Monthly')
            {
              document.getElementById(divId).style.display="block";
              document.getElementById('2016Weekly').style.display="none";
            }else if(divId=='2016Weekly')
            {
              document.getElementById(divId).style.display="block";
              document.getElementById('2016Monthly').style.display="none";

            }else if(divId=='2016')
            {
              document.getElementById(divId).style.visibility="visible";
              document.getElementById('2015').style.visibility="hidden";
            }else if(divId=='2015')
            {
              document.getElementById(divId).style.visibility="visible";
              document.getElementById('2016').style.visibility="hidden";
            }
          }

        </script>
        </body>
      </html>

输出:

enter image description here

最佳答案

(主要)问题是,您传递的不是 id,而是字符串 year

因此,您需要将 onchange 值更改为 this.value,以便它将采用所选内容的 (2015/2015) .

<!DOCTYPE html>
<html>
  <body>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <select class="dropdown" id="year" name="year" size="1" onchange="changeDiv(this.value);">
      <option value="2015" selected="selected">2015</option>
      <option value="2016">2016</option> 
    </select>

    <div id="2015">
      <B>AAAAAAA</B>
      <input type="radio" checked="checked" onclick="javascript:changeDiv('2015Monthly');" name="2015_type" />Monthly
      <input type="radio" onclick="javascript:changeDiv('2015Weekly');" align="left" name="2015_type" />Weekly

      <div id="2015Monthly" ><B>2015 - Monthly</B></div>
      <div id="2015Weekly" ><B>2015 - Weekly</B></div>
    </div>
    <div id="2016">
      <B>HHHHHHH</B>
      <input type="radio" checked="checked" onclick="javascript:changeDiv('2016Monthly');" name="2016_type" />Monthly
      <input type="radio" onclick="javascript:changeDiv('2016Weekly');" name="2016_type" />Weekly
      <div id="2016Monthly" ><B>2016 - Monthly</B></div>
      <div id="2016Weekly" ><B>2016 - Weekly</B></div>
    </div>
    <script>
      function changeDiv(divId)
      {
        if(divId=='2015Monthly')
        {
          document.getElementById(divId).style.display="block";
          document.getElementById('2015Weekly').style.display="none";
        }else if(divId=='2015Weekly')
        {
          document.getElementById(divId).style.display="block";
          document.getElementById('2015Monthly').style.display="none";
        }else if(divId=='2016Monthly')
        {
          document.getElementById(divId).style.display="block";
          document.getElementById('2016Weekly').style.display="none";
        }else if(divId=='2016Weekly')
        {
          document.getElementById(divId).style.display="block";
          document.getElementById('2016Monthly').style.display="none";

        }else if(divId=='2016')
        {
          document.getElementById(divId).style.display="block";
          document.getElementById('2015').style.display="none";
        }else if(divId=='2015')
        {
          document.getElementById(divId).style.display="block";
          document.getElementById('2016').style.display="none";
        }
      }
      $('#year').change();
      $(':checked').trigger('click');
    </script>
  </body>
</html>

http://output.jsbin.com/lileze

关于Javascript - 隐藏和调用特定 "Div"时出错(调用特定 div - onchange),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35175308/

相关文章:

.net - 黑客能否查看隐藏字段的值

Javascript smoothscroll 由于某种原因不起作用

javascript - window.location.href.match 不工作

javascript - 如何使用 jQuery 将一个元素移动到另一个元素中

html - 更改轮播 slider Bootstrap 高度

javascript - onSubmit 按钮不会加载位置

javascript - 如何用webpack生成多个html文件?

javascript - jQuery - 将行添加到数据表而不重新加载/刷新

javascript - 更改 Canvas 以绘制线条

html - 有没有办法在 css/html 中设置最小背景大小