使用带有多个选择的javascript来更新innerhtml

Use javascript with multiple selects to update innerhtml

本文关键字:javascript 更新 innerhtml 选择      更新时间:2023-09-26

我对JavaScript很陌生,但我会边学习边学习。因此,我的问题是关于一个表单中多个动态生成的<select>,并使用它们用价格更新相应的div>span内容。我试过用几种方法运行它,但我不太了解产生的错误,不知道如何修复它。基本上,我列出域名购买价格,由用户决定域名是什么。在下面的例子中,我对域名进行了硬编码,但在我的脚本中,这些域名将由PHP会话信息产生。

https://jsfiddle.net/Lzq3vcb8/

function getPrice(domain) {
  var getdom = domain + "_prices";
  var putdom = domain + "_displayprice";
  var inner = document.getElementById(getdom).value;
  document.getElementById(putdom).innerHTML = inner;
}
<div class="row">
  <div class="col-lg-6">
    <select class="form-control" onchange="getPrice('websiteone.info')" id="websiteone.info_prices">
      <option data-price="11.29" value="1">1 Year</option>
      <option data-price="11.29" value="2">2 Years</option>
      <option data-price="11.29" value="3">3 Years</option>
      <option data-price="11.29" value="4">4 Years</option>
      <option data-price="11.29" value="5">5 Years</option>
      <option data-price="11.29" value="6">6 Years</option>
      <option data-price="11.29" value="7">7 Years</option>
      <option data-price="11.29" value="8">8 Years</option>
      <option data-price="11.29" value="9">9 Years</option>
      <option data-price="11.29" value="10">10 Years</option>
    </select>
  </div>
  <div class="col-lg-6">
    <select class="form-control" onchange="getPrice('websitetwo.info')" id="websitetwo.info_prices">
      <option data-price="11.29" value="1">1 Year</option>
      <option data-price="11.29" value="2">2 Years</option>
      <option data-price="11.29" value="3">3 Years</option>
      <option data-price="11.29" value="4">4 Years</option>
      <option data-price="11.29" value="5">5 Years</option>
      <option data-price="11.29" value="6">6 Years</option>
      <option data-price="11.29" value="7">7 Years</option>
      <option data-price="11.29" value="8">8 Years</option>
      <option data-price="11.29" value="9">9 Years</option>
      <option data-price="11.29" value="10">10 Years</option>
    </select>
  </div>
</div>
<div class="row">
  <div class="col-lg-6 alert alert-warning"><span id="websiteone_displayprice">test1</span>
  </div>
  <div class="col-lg-6 alert alert-warning"><span id="websitetwo_displayprice">test2</span>
  </div>
</div>

如果输出元素与javascript上的目标元素不匹配,请检查下面的代码。请使用websiteone.info_displayprice而不是websiteone_displayprice,因为域具有.info并且将在显示价格上进行准备。

<div class="row">
  <div class="col-lg-6 alert alert-warning"><span id="websiteone.info_displayprice">test1</span>
  </div>
  <div class="col-lg-6 alert alert-warning"><span id="websitetwo.info_displayprice">test2</span>
  </div>
</div>

function getPrice(domain) {
  var getdom = domain + "_prices";
  var putdom = domain + "_displayprice";
  var inner = document.getElementById(getdom).value;
  document.getElementById(putdom).innerHTML = inner;
}
<div class="row">
  <div class="col-lg-6">
    <select class="form-control" onchange="getPrice('websiteone.info')" id="websiteone.info_prices">
      <option data-price="11.29" value="1">1 Year</option>
      <option data-price="11.29" value="2">2 Years</option>
      <option data-price="11.29" value="3">3 Years</option>
      <option data-price="11.29" value="4">4 Years</option>
      <option data-price="11.29" value="5">5 Years</option>
      <option data-price="11.29" value="6">6 Years</option>
      <option data-price="11.29" value="7">7 Years</option>
      <option data-price="11.29" value="8">8 Years</option>
      <option data-price="11.29" value="9">9 Years</option>
      <option data-price="11.29" value="10">10 Years</option>
    </select>
  </div>
  <div class="col-lg-6">
    <select class="form-control" onchange="getPrice('websitetwo.info')" id="websitetwo.info_prices">
      <option data-price="11.29" value="1">1 Year</option>
      <option data-price="11.29" value="2">2 Years</option>
      <option data-price="11.29" value="3">3 Years</option>
      <option data-price="11.29" value="4">4 Years</option>
      <option data-price="11.29" value="5">5 Years</option>
      <option data-price="11.29" value="6">6 Years</option>
      <option data-price="11.29" value="7">7 Years</option>
      <option data-price="11.29" value="8">8 Years</option>
      <option data-price="11.29" value="9">9 Years</option>
      <option data-price="11.29" value="10">10 Years</option>
    </select>
  </div>
</div>
<div class="row">
  <div class="col-lg-6 alert alert-warning"><span id="websiteone.info_displayprice">test1</span>
  </div>
  <div class="col-lg-6 alert alert-warning"><span id="websitetwo.info_displayprice">test2</span>
  </div>
</div>

我会考虑一个jQuery解决方案jsfiddle

HTML:

<div class="row">
  <div class="col-lg-6">
    <select class="form-control webprice" myUrl="website_one" id="websiteone_select">
        <option data-price="11.29" value="1">1 Year</option>
        <option data-price="11.29" value="2">2 Years</option>
        <option data-price="11.29" value="3">3 Years</option>
        <option data-price="11.29" value="4">4 Years</option>
        <option data-price="11.29" value="5">5 Years</option>
        <option data-price="11.29" value="6">6 Years</option>
        <option data-price="11.29" value="7">7 Years</option>
        <option data-price="11.29" value="8">8 Years</option>
        <option data-price="11.29" value="9">9 Years</option>
        <option data-price="11.29" value="10">10 Years</option>
    </select>
  </div>
  <div class="col-lg-6">
    <select class="form-control webprice" myUrl="website_two" id="websitetwo_select">
        <option data-price="11.29" value="1">1 Year</option>
        <option data-price="11.29" value="2">2 Years</option>
        <option data-price="11.29" value="3">3 Years</option>
        <option data-price="11.29" value="4">4 Years</option>
        <option data-price="11.29" value="5">5 Years</option>
        <option data-price="11.29" value="6">6 Years</option>
        <option data-price="11.29" value="7">7 Years</option>
        <option data-price="11.29" value="8">8 Years</option>
        <option data-price="11.29" value="9">9 Years</option>
        <option data-price="11.29" value="10">10 Years</option>
   </select>
  </div>
</div>
<div class="row">
   <div class="col-lg-6 alert alert-warning"><span id="display_price">test1</span></div>
</div>

JS:

$(document).on("change", ".webprice", function(){
    // get all of the data we need to make calculations
    yearPrice = Number($('option:selected', this).attr("data-price"));
    years = Number($(this).val());
    finalPrice = Math.floor(yearPrice * years * 100)/100;
    url = $(this).attr("myUrl");
    // display the final price
    displayPrices = "The price for " + url + " over " + years + " years is $" + finalPrice;
    $("#display_price").html(displayPrices);
});