选择两个单独的 HTML select 选项时如何调用函数?

How to call a function when two separate HTML select options are chosen?

当用户 select 有两个单独的 select 选项时,您能帮我找到一种调用函数的方法吗?请仅使用 Javascript 提供答案。我真的很难理解这个问题,因为我最近才开始学习。我想根据两个 select 的组合显示不同的结果。

    <body>
  <header><div class="Heading"><h1>Shipper Calculator</h1></div><hr></header>
      <select id="Courier">
        <option disabled="disabled" selected="selected">Courier</option>
        <option id="Marken">Marken</option>
        <option id="WorldCourier">World Courier</option>
        <option id="Quickstat">Quickstat</option>
        <option id="DHL">DHL</option>
      </select>
    <select id="Temperature">
      <option disabled="disabled" selected="selected">Temperature</option>
      <option id="ControlledAmbient_Refrigerated">15-25ºC / 2-8ºC</option>
      <option id="ControlleFrozen">-25ºC to -15º</option>
      <option id="DryIce">Dry Ice</option>
      <option id="Ambient">Ambient</option>
    </select>

以下是我目前所有的 Javscript。当某个选项被 selected 但它们不能一起工作时,这可以显示警报。例如,我最想说的是……如果 "Marken" 和 "Dry Ice" 是 selected,那么 运行 是一个特定的函数。

document.getElementById("Courier").addEventListener("change", myFunction);
function myFunction() {
 var x = document.getElementById("Courier").selectedIndex;
 if (x == "3")
 alert("hey");
}

document.getElementById("Temperature").addEventListener("change", myFunction);
function myFunction() {
 var x = document.getElementById("Temperature").selectedIndex;
 if (x == "3")
 alert("hey");
}

好的,有几点需要注意:

  1. 改为将选项 ID 更改为值:
<select id="Courier">
    <option disabled="disabled" selected="selected">Courier</option>
    <option value="Marken">Marken</option>
    <option value="WorldCourier">World Courier</option>
    <option value="Quickstat">Quickstat</option>
    <option value="DHL">DHL</option>
</select>
<select id="Temperature">
    <option disabled="disabled" selected="selected">Temperature</option>
    <option value="ControlledAmbient_Refrigerated">15-25ºC / 2-8ºC</option>
    <option value="ControlleFrozen">-25ºC to -15º</option>
    <option value="DryIce">Dry Ice</option>
    <option value="Ambient">Ambient</option>
</select>
  1. 为什么不使用一个函数来检查两个选择:
document.getElementById("Courier").addEventListener("change", myFunction);

document.getElementById("Temperature").addEventListener("change", myFunction);

function myFunction() {
    var y = document.getElementById("Courier");
    var x = document.getElementById("Temperature");
    if (y.value === "Marken" && x.value === "DryIce") {
        alert("hey");
    }
}

一个可能让您感到困惑的问题是您将两个函数命名为相同的名称。这会导致意想不到的结果。确保您的函数具有唯一的名称。我提到这一点是为了避免您以后遇到同样的问题。

试试这个

https://jsfiddle.net/470dxe2b/

 <header><div class="Heading"><h1>Shipper Calculator</h1></div><hr></header>
      <select id="Courier">
        <option disabled="disabled" selected="selected">Courier</option>
        <option value="Marken">Marken</option>
        <option value="WorldCourier">World Courier</option>
        <option value="Quickstat">Quickstat</option>
        <option value="DHL">DHL</option>
      </select>
    <select id="Temperature">
      <option disabled="disabled" selected="selected">Temperature</option>
      <option value="ControlledAmbient_Refrigerated">15-25ºC / 2-8ºC</option>
      <option value="ControlleFrozen">-25ºC to -15º</option>
      <option value="DryIce">Dry Ice</option>
      <option value="Ambient">Ambient</option>
    </select>

Javascript

let temp = document.getElementById('Temperature');
let cour = document.getElementById('Courier');

temp.addEventListener('change', () => update());
cour.addEventListener('change', () => update());

function update(){
    dropDown1Value = cour.value;
    dropDown2Value = temp.value;

    switch (dropDown1Value + dropDown2Value) {
        case 'MarkenDryIce' :
                MarkenDryIce();
        break;
        default:
                console.log('Nothing to do');
        break;
    }
}

function MarkenDryIce(){
        alert('Marken + Dry Ice Selected');
}