Скрыть DIV при выборе других переключателей - PullRequest
0 голосов
/ 17 апреля 2020

Посоветуйте, пожалуйста, как решить эту проблему: радиокнопка OptionA отображает блок DIV, который содержит несколько флажков, но радиокнопка OptionB не может скрыть отображаемый блок с помощью левой радиокнопки

 function ShowHideDiv(chkPassport) {
  var dvPassport = document.getElementById("dvPassport");
  dvPassport.style.display = chkPassport.checked ? "block" : "none";
}
function ShowHideDivl(chkPassport) {
  var dvPassport = document.getElementById("dvPassport");
  dvPassport.style.display = chkPassport.checked ? "block" : "none";
}
function getFeaturePrice() {}
function calculateTotal() {}
function hideTotal() {}

<body onload='hideTotal()'>
  <div id="wrap">
    <form action="" id="softwareform" onsubmit="return false;">
      <div>
        <div class="cont_order">
          <fieldset>
            <label class='radiolabel'><input type="radio" name="selectedsoftware" onclick="calculateTotal();ShowHideDiv(this)" />Software A </label>
            <label class='radiolabel'><input type="radio" name="selectedsoftware" onclick="calculateTotal();ShowHideDivl(this)" /> software B</label>
            <div class='row'>
              <div id="dvPassport" style="display: none">
                <label class='inlinelabel'><input type="checkbox" name="selectedfeature" onclick="calculateTotal()" />Video
                </label> </div>
              <div id="dvPassportl" style="display:none">
                <label class='inlinelabel'><input type="checkbox" name="selectedfeature" onclick="calculateTotal()" />Video</label>
              </div>
            </div>
          </fieldset>
        </div>
        <div id="total">

        </div>
      </div>
    </form>
  </div>

  <script src="script.js"></script>

</body>

1 Ответ

0 голосов
/ 17 апреля 2020

В вашем коде, когда вы делаете ShowHideDiv(this), вы всегда передаете текущий выбранный переключатель. Итак, чтобы увидеть, какой из них выбран, вы можете сделать что-то вроде:

  function ShowHideDiv(chkPassport) {
    var dvPassport = document.getElementById("dvPassport");
    dvPassport.style.display =
      chkPassport.value === "Round1" ? "block" : "none";
  }

У вас также есть опечатка ShowHideDivl() вместо ShowHideDiv().

var featuresmonth = new Array();
featuresmonth["Round1"] = 300;
featuresmonth["Round2"] = 300;
featuresmonth["Round3"] = 300;
featuresmonth["Round4"] = 525;
featuresmonth["Round5"] = 2000;
featuresmonth["Round6"] = 2000;

function ShowHideDiv(chkPassport) {
  var dvPassport = document.getElementById("dvPassport");
  dvPassport.style.display =
    chkPassport.value === "Round1" ? "block" : "none";
}

function getFeaturePrice() {
  var getFeaturePrice = 0;
  var theForm = document.forms["softwareform"];
  var selectedFeature = theForm.elements["selectedfeature"];
  for (var i = 0; i < selectedFeature.length; i++) {
    if (selectedFeature[i].checked == true) {
      getFeaturePrice += featuresmonth[selectedFeature[i].value];
    }
  }
  return getFeaturePrice;
}

function calculateTotal() {
  var softwarePrice = getFeaturePrice();
  var formatter = new Intl.NumberFormat();
  `enter code here`;
  var divobj = document.getElementById("total");
  divobj.style.display = "block";
  divobj.innerHTML = "Total = " + formatter.format(softwarePrice);
}

function hideTotal() {
  var divobj = document.getElementById("total");
  divobj.style.display = "none";
}
<body onload="hideTotal()">
  <div id="wrap">
    <form action="" id="softwareform" onsubmit="return false;">
      <div>
        <div class="cont_order">
          <fieldset>
            <label class="radiolabel"><input
                  type="radio"
                  name="selectedsoftware"
                  value="Round1"
                  onclick="calculateTotal();ShowHideDiv(this)"
                />Software A
              </label>
            <label class="radiolabel"><input
                  type="radio"
                  name="selectedsoftware"
                  value="Round2"
                  onclick="calculateTotal();ShowHideDiv(this)"
                />
                software B</label
              >
              <div class="row">
                <div class="column">
                  <div class="blue-column">
                    <div id="dvPassport" style="display: none;">
                      <label class="inlinelabel"
                        ><input
                          type="checkbox"
                          name="selectedfeature"
                          value="Round3"
                          onclick="calculateTotal()"
                        />Video
                      </label>
        </div>
      </div>
  </div>
  <div class="column">
    <div class="green-column">
      <div id="dvPassportl" style="display: none;">
        <label class="inlinelabel"><input
                          type="checkbox"
                          name="selectedfeature"
                          value="Round4"
                          onclick="calculateTotal()"
                        />Video</label
                      >
                    </div>
                  </div>
                </div>
              </div>
              <div class="row"><div class="column"></div></div>
            </fieldset>
          </div>
          <div id="total"></div>
        </div>
      </form>
    </div>
    <script type="text/javascript">
      var featuresmonth = new Array();
      featuresmonth["Round1"] = 300;
      featuresmonth["Round2"] = 300;
      featuresmonth["Round3"] = 300;
      featuresmonth["Round4"] = 525;
      featuresmonth["Round5"] = 2000;
      featuresmonth["Round6"] = 2000;

      function ShowHideDiv(chkPassport) {
        var dvPassport = document.getElementById("dvPassport");
        dvPassport.style.display =
          chkPassport.value === "Round2" ? "block" : "none";
      }

      function getFeaturePrice() {
        var getFeaturePrice = 0;
        var theForm = document.forms["softwareform"];
        var selectedFeature = theForm.elements["selectedfeature"];
        for (var i = 0; i < selectedFeature.length; i++) {
          if (selectedFeature[i].checked == true) {
            getFeaturePrice += featuresmonth[selectedFeature[i].value];
          }
        }
        return getFeaturePrice;
      }
      function calculateTotal() {
        var softwarePrice = getFeaturePrice();
        var formatter = new Intl.NumberFormat();
        `enter code here`;
        var divobj = document.getElementById("total");
        divobj.style.display = "block";
        divobj.innerHTML = "Total = " + formatter.format(softwarePrice);
      }
      function hideTotal() {
        var divobj = document.getElementById("total");
        divobj.style.display = "none";
      }
    </script>
  </body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...