【问题标题】:Matching an HTML Id with the property of an object将 HTML Id 与对象的属性匹配
【发布时间】:2018-05-07 21:45:23
【问题描述】:

我有一个包含两种车辆的 HTML 列表:自行车和卡车,一个带有关联属性(“车轮”和“窗户”)的表单,以及一个包含所述属性的关联值的嵌套对象(“车辆”)。

我想编写一个函数,它将获取所选车辆的 id,将其与嵌套对象中的对象进行匹配,然后使用适当的属性填写表单。

例如,如果您从列表中选择“van”,则表单会用“2”填充“wheels”,用“1”填充 windows。

理想情况下,该功能应足够灵活,以允许包含额外的车辆。

任何帮助将不胜感激。谢谢。

var bikeDetails = {
  wheels: 2,
  windows: 0
};
var vanDetails = {
  wheels: 4,
  windows: 1
};

var vehicles = {
  bike: bikeDetails,
  van: vanDetails
};
<div id="classSelectWrapper">
  <form>
    <select id="vehicleList">
      <option value="bike">bike</option>
      <option value="van">van</option>
    </select>
  </form>
</div>


<div class="vehicleDetails">
  <form id="vehicleProps">
    <p>
      <label for="wheels" value="">wheels:</label>
      <input id="wheels" type="text" name="wheels" value="" disabled>
    </p>

    <p>
      <label for="windows">windows:</label>
      <input id="windows" type="text" name="windows" value="" disabled>
    </p>
  </form>
</div>

【问题讨论】:

    标签: javascript html javascript-objects


    【解决方案1】:

    您的脚本可能是这样的:

    var select = document.getElementById('vehicleList');
    select.addEventListener('change', function () {
        var selected = this.selectedOptions[0].value,
            wheels = document.getElementById('wheels'),
            windows = document.getElementById('windows');
    
        wheels.value = vehicles[selected].wheels;
        windows.value = vehicles[selected].windows;
    });
    

    【讨论】:

      【解决方案2】:

      你的问题的解决方案可以这样实现,希望对你有所帮助:

      document.querySelector("#vehicleList").addEventListener("change", function(e) {
        let value = e.target.options[e.target.selectedIndex].value;
        if(value in vehicles) {
          document.querySelector("#wheels").value = vehicles[value].wheels;
          document.querySelector("#windows").value = vehicles[value].windows;
        }
      });
      

      【讨论】:

      • 您能解释一下“e.target”和“options”的用途吗?
      • 为了在事件被触发时对其进行管理,在我们的例子中,我们使用“change”事件来寻找具有 target 属性的目标 DOM 元素,以获取所需的额外信息。 options 属性为我们提供了属于父选择的子选项数组,在我们的例子中是一个长度为 2 的数组。 selectedIndex 属性是我们谈到的前一个数组的索引,它指向选定的对象,在我们的例子中是 0 或 1。注意:每个事件对象都有不同的信息,因此不同的属性取决于偶数类型。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多