JavaScriptif语句麻烦

JavaScript if statement trouble

我的 javascript 假设要为价格变量增加价值,然后 return 价格,我的问题是我使用的是 select 选项,当我有超过一个价格将只使用最后一个 if 语句的 id,这是我的 HTML;

<form>
    <select>
    <option name ="Bristol "value="40.0" id ="BN1">Bristol - Newcastle</option>
    <option name ="London "value="35.0" id ="BL1">Bristol - London</option>
    </select>
    <button type="button" onclick="BookingFare(); return false;">Submit</button><br>
    </form>
    <label id='priceBox'></label>

这是我的 Javascript

function BookingFare() {
        var price = 0;
        //var ofAdults = getElementById('adults').value;
        //var ofChildren = getElementById('children').value;
        var BN1 = document.getElementById('BN1').value;
        var BL1 = document.getElementById('BL1').value;

        if (BL1) {
         var price = BL1;
        }
        if (BN1) {
         var price = BN1; 
        }
        document.getElementById('priceBox').innerHTML = price;
        }

所以基本上程序将 return BN1 的价格,即使我选择布里斯托尔 - 伦敦。 任何建议表示赞赏。

结果是有道理的。在这两种情况下,ifs 中的检查都是正确的(可能是因为 BL1、BN1 都存在)。

您需要在代码中做的是检索选定的索引,然后使用它。

为您的下拉列表指定一个 ID:

<select id="dropdownList">
....

然后在您的代码中使用它来检索所选值:

var dropdownList = document.getElementById("dropdownList");
var price = dropdownList.options[dropdownList.selectedIndex].value;
//rest of code

看看类似的问题here。 也可以找相关教程here.

1st:您多次定义变量 price。 第二:您的代码检查 'value' 并且当然,它总是有一个值。 我想,你真正想要检查的是,是否选择了一个选项,然后使用它的值。

function BookingFare() {
  var price = 0;
  var BN1 = document.getElementById('BN1');
  var BL1 = document.getElementById('BL1');

  if (BL1.selected) {
    price = BL1.value;
  }
  if (BN1.selected) {
    price = BN1.value;
  }
  document.getElementById('priceBox').innerHTML = price;
}
<form>
  <select>
    <option name="Bristol " value="40.0" id="BN1">Bristol - Newcastle</option>
    <option name="London " value="35.0" id="BL1">Bristol - London</option>
  </select>
  <button type="button" onclick="BookingFare(); return false;">Submit</button>
  <br>
  <label id='priceBox'></label>
</form>

我想这就是您要找的。

<script>
    function BookingFare() {
        var price = 0;
        //var ofAdults = getElementById('adults').value;
        //var ofChildren = getElementById('children').value;
        var bristol = document.getElementById('bristol').value;
        console.log(bristol);
        if (bristol == 35.0) {
         var price = bristol;
        }
        if (bristol == 40.0) {
         var price = bristol; 
        }
        document.getElementById('priceBox').innerHTML = price;
}
</script>
<form>
    <select id="bristol">
    <option name ="Bristol "value="40.0" id ="BN1">Bristol - Newcastle</option>
    <option name ="London "value="35.0" id ="BL1">Bristol - London</option>
    </select>
    <button type="button" onclick="BookingFare(); return false;">Submit</button>
</form>
<label id='priceBox'></label>