【问题标题】:JavaScript onchange function doesn't workJavaScript onchange 函数不起作用
【发布时间】:2015-06-24 20:13:22
【问题描述】:

这个 javascript 应该改变下拉列表的 HTML 以及改变相应 div 的内容。第一次单击会更改下拉 html,但您无法将其更改回来,并且您会丢失下拉列表上的小箭头,让用户知道它是一个下拉列表。填充复选框不会填充 div,因为我不知道如何让 javascript 让我放置/删除复选框

JAVASCRIPT:

    function changeSelection() {
        var x = document.getElementById("populateSelection").id;

        if (x == "selectionViews") {
            document.getElementById("dropdownMenuSelect").innerHTML = "Views";
            document.getElementById("populateCheckBoxes").innerHTML = "";
        } else {
            document.getElementById("dropdownMenuSelect").innerHTML = "Tables";
            document.getElementById("unpopulateCheckBoxes").innerHTML = "";
        }
    }

当检查Tablablow单选按钮时,PopulateCheckboxes应具有这些复选框,并且当检查未填充的未填充的无线电按钮时,DIV将为空。我还没有这个代码,因为我相信它应该在 javascript 中,但粘贴显然不起作用

                        <div class="checkbox">
                            <label>
                                <input type="checkbox" id="selectionCondition" checked/>50 million
                            </label>
                        </div>
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" id="selectionDistribution"/>100 million
                            </label>
                        </div>
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" id="selectionProgram"/>Status Quo
                            </label>
                        </div>
                        <div class="checkbox">
                            <label>
                                <input type="checkbox" id="selectionTreatment"/>Do Nothing
                            </label>
                        </div>

HTML:

此 html 包含应该更改的下拉列表和应该更改的 2 个 div

                    <form role="form">
                        <div class="row">
                            <div class="radio col-xs-2" id="populateSelection"  onchange="changeSelection()">
                                <label>
                                    <input type="radio" name="optradio" id="selectionTables" />Use Tables
                                </label>&nbsp;&nbsp;
                                <label>
                                    <input type="radio" name="optradio" id="selectionViews" />Use Views
                                </label>
                            </div>
                            <div class="dropdown col-xs-10">
                                <!--DROPDOWN BUTTON-->
                                <button class="btn btn-default dropdown-toggle btn-xs btn-orange" type="button" id="dropdownMenuSelect" data-toggle="dropdown" aria-expanded="true" style="margin-top:10px">
                                    Views
                                    <span class="caret"></span>
                                </button>
                                <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenuSelect">
                                    <!--DROPDOWN MENU-->
                                    <li role="presentation"><a role="menuitem" tabindex="-1" class="link-no-jump" href="#graphOneChart">Chart</a></li>
                                    <li role="presentation"><a role="menuitem" tabindex="-1" class="link-no-jump" href="#graphOneData">Data</a></li>
                                </ul>
                            </div>
                        </div>
                        <div class="row" id="populateCheckBoxes"></div>
                        <div class="row" id="unpopulateCheckBoxes"></div>
                    </form>

这是工作代码,它非常简单,但工作方式相同,http://codepen.io/MarkBond/pen/JdOZaw?editors=101。顺便说一句,这是通过引导程序完成的

【问题讨论】:

    标签: javascript jquery html twitter-bootstrap onchange


    【解决方案1】:

    涵盖你的整个问题,我想你想要这样:

    更新了整个答案:

    HTML

    <div class="radio col-xs-2" id="populateSelection" onchange="changeSelection()">
          <label>
            <input type="radio" name="optradio" id="selectionTables" />Use Tables
          </label>&nbsp;&nbsp;
          <label>
            <input type="radio" name="optradio" id="selectionViews" />Use Views
          </label>
        </div>
    

    去掉ul里面的内容并动态添加:

    <div class="dropdown col-xs-10">
          <!--DROPDOWN BUTTON-->
          <button class="btn btn-default dropdown-toggle btn-xs btn-orange" type="button" id="dropdownMenuSelect" data-toggle="dropdown" aria-expanded="true" style="margin-top:10px">
            Views
            <span class="caret"></span>
          </button>
          <ul id="dropdown-menu" class="dropdown-menu" role="menu" aria-labelledby="dropdownMenuSelect"></ul>
        </div>
    

    JS/JQuery

    function changeSelection() {
    
          if (document.getElementById("selectionTables").checked) {
            var x = document.getElementById("dropdownMenuSelect");
            var text = "Tables ";
            text += "<span class='caret'>";
            text += "</span>";
            x.innerHTML = text;
            document.getElementById("populateCheckBoxes").innerHTML = "";
            var y = document.getElementById("dropdown-menu");
            var text2 = "<li role='presentation'><a role='menuitem' tabindex='-1' class='link-no-jump' href='#graphOneChart'>";
            text2 += "Chart 1";
            text2 += "</a></li";
            text2 += "<li role='presentation'><a role='menuitem' tabindex='-1' class='link-no-jump' href='#graphOneChart'>";
            text2 += "Data 1";
            text2 += "</a></li";
            y.innerHTML = text2;
          } else {
            var x = document.getElementById("dropdownMenuSelect");
            var text = "Views ";
            text += "<span class='caret'>";
            text += "</span>";
            x.innerHTML = text;
            document.getElementById("unpopulateCheckBoxes").innerHTML = "";
            var y = document.getElementById("dropdown-menu");
            var text2 = "<li role='presentation'><a role='menuitem' tabindex='-1' class='link-no-jump' href='#graphOneChart'>";
            text2 += "Chart 2";
            text2 += "</a></li";
            text2 += "<li role='presentation'><a role='menuitem' tabindex='-1' class='link-no-jump' href='#graphOneChart'>";
            text2 += "Data 2";
            text2 += "</a></li";
            y.innerHTML = text2;
          }
        }
    

    WORKING:CODEPEN

    【讨论】:

    • 抱歉对之前的帖子发表评论。
    • 没有它的好 div,你是对的,我确实不止一次地问过同样的问题,这并不酷。所以我很抱歉有点生气,我对这个社区还是新手,有时我会很不耐烦,但这不是借口,所以我很抱歉。还要感谢您对这个问题的帮助,它解决了我所有的问题。谢谢你! :)
    【解决方案2】:

    把你的函数改成这个

    function changeSelection() {
    
        if (document.getElementById("selectionViews").checked) {
            document.getElementById("dropdownMenuSelect").innerHTML = "Views";
            document.getElementById("populateCheckBoxes").innerHTML = "";
        } else {
            document.getElementById("dropdownMenuSelect").innerHTML = "Tables";
            document.getElementById("unpopulateCheckBoxes").innerHTML = "";
        }
    }
    

    【讨论】:

      【解决方案3】:

      重读这一行:

      var x = document.getElementById("populateSelection").id;
      

      这是一些毫无意义的逻辑。您找到的 ID 为 populateSelection 的元素的 ID 始终为 populateSelection

      您应该使用value 属性和正确的事件处理。

      DEMO

      function changeSelection(e) {
        var x = e.target.value;
        if (x == "selectionViews") {
          document.getElementById("dropdownMenuSelect").innerHTML = "Views";
          document.getElementById("populateCheckBoxes").innerHTML = "";
        } else {
          document.getElementById("dropdownMenuSelect").innerHTML = "Tables";
          document.getElementById("unpopulateCheckBoxes").innerHTML = "";
        }
      }
      
      document.getElementById('populateSelection').addEventListener('change', changeSelection);
      <!-- Latest compiled and minified CSS --><link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
      
      <!-- jQuery library -->
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
      
      <!-- Latest compiled JavaScript -->
      <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
      
      <form role="form">
        <div class="row">
          <div class="radio col-xs-2" id="populateSelection">
            <label>
              <input type="radio" name="optradio" value="selectionTables" />Use Tables
            </label>&nbsp;&nbsp;
            <label>
              <input type="radio" name="optradio" value="selectionViews" />Use Views
            </label>
          </div>
          <div class="dropdown col-xs-10">
            <!--DROPDOWN BUTTON-->
            <button class="btn btn-default dropdown-toggle btn-xs btn-orange" type="button" id="dropdownMenuSelect" data-toggle="dropdown" aria-expanded="true" style="margin-top:10px">
              Views
              <span class="caret"></span>
            </button>
            <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenuSelect">
              <!--DROPDOWN MENU-->
              <li role="presentation"><a role="menuitem" tabindex="-1" class="link-no-jump" href="#graphOneChart">Chart</a></li>
              <li role="presentation"><a role="menuitem" tabindex="-1" class="link-no-jump" href="#graphOneData">Data</a></li>
            </ul>
          </div>
        </div>
        <div class="row" id="populateCheckBoxes"></div>
        <div class="row" id="unpopulateCheckBoxes"></div>
      </form>

      一些阅读材料:

      【讨论】:

      • 感谢你注意到我的愚蠢错误,你教会了我一些新东西
      猜你喜欢
      • 1970-01-01
      • 2011-02-22
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多