为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过 vanialla JavaScript 获取所选选项的数据属性?

如何通过 vanialla JavaScript 获取所选选项的数据属性?

温温酱 2022-05-22 16:00:23
我正在尝试使用 vanilla JavaScript 获取所选选项的数据属性。<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js'></script><select id="roomno" name="roomno">    <option value="1" data-daily-rate="50" data-weekly-rate="300" data-monthly-rate="1200">1 - Single room</option>    <option value="2" data-daily-rate="100" data-weekly-rate="600" data-monthly-rate="2500">2 - Double Bedroom</option>    <option value="3" data-daily-rate="150" data-weekly-rate="850" data-monthly-rate="4000">3 - Deluxe</option>    </select><script>document.addEventListener("DOMContentLoaded", () =>{    $("#roomno").on("change", function() // Used jQuery only for this    {             calculateRate();    });});function calculateRate(){    let roomno = document.getElementById("roomno");    let daily_rate = roomno.dataset['daily-rate'];    console.log(daily_rate);}</script>
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

要获得选定的选项,您可以使用:


var roomno = e.options[e.selectedIndex];

要获取所选选项的数据集值,您可以使用


 roomno.dataset.dailyRate

 // Or,

 roomno.dataset['dailyRate']

此外,您还可以访问其他数据属性,例如:


 roomno.dataset.dailyRate

 roomno.dataset.weeklyRate

 roomno.dataset.monthlyRate

此外,您不需要仅为此使用 jQuery $("#roomno").on("change", function():. 您可以附加change事件侦听器,例如:


 document.getElementById("roomno").addEventListener("change", calculateRate);

在这里演示:


document.addEventListener("DOMContentLoaded", () => {

  document.getElementById("roomno").addEventListener("change", calculateRate);

});


function calculateRate() {

  let e = document.getElementById("roomno");

  var roomno = e.options[e.selectedIndex];

  let daily_rate = roomno.dataset.dailyRate;

  console.log(daily_rate);

}

<select id="roomno" name="roomno">

  <option value="0" >-- Select --</option>

  <option value="1" data-daily-rate="50" data-weekly-rate="300" data-monthly-rate="1200">1 - Single room</option>

  <option value="2" data-daily-rate="100" data-weekly-rate="600" data-monthly-rate="2500">2 - Double Bedroom</option>

  <option value="3" data-daily-rate="150" data-weekly-rate="850" data-monthly-rate="4000">3 - Deluxe</option>

</select>


查看完整回答
反对 回复 2022-05-22
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号