简体   繁体   中英

Select a value from a table using a dropdown menu

I'm trying to select a value from a table based on a value in a dropdown menu. I have this so far:

<table class="table table-striped table-hover table-bordered table-responsive" id="rates">
    <thead>
        <tr style="background-color: "><th>State</th><th>Fee1</th><th>Fee2</th><th>Fee3</th><th>Fee4</th><th>Fee5</th><th>Fee6</th></tr>
    </thead>
    <tbody id="rates">
        <tr><td id="AR">Arkansas</td><td id="AR_F1">.04</td><td id="AR_F2">0.00</td><td id="AR_F3">0.00</td><td id="AR_F4">0.00</td><td id="AR_F5">0.00</td><td id="AR_F6">0.00</td></tr>
        <tr><td id="AZ">Arizona</td><td id="AZ_F1">.03</td><td id="AZ_F2">0.002</td><td id="AZ_F3">0.00</td><td id="AZ_F4">0.00</td><td id="AZ_F5">0.00</td><td id="F6_O">0.00</td></tr>
        <tr><td id="CA">California</td><td id="CA_F1">.03</td><td  id="CA_F2">0.002</td><td id="CA_F3">0.00</td><td id="CA_F4">0.00</td><td id="CA_F5">0.00</td><td id="CA_F6">0.00</td></tr>
    </tbody>
</table><br/>

<select id="stateSel">
      <option value="Arkansas">Arkansas</option>
      <option value="Arizona">Arizona</option>
      <option value="California">California</option>
    </select><br/>

<table class="table table-bordered">
<tbody>
<tr><td><h4>Tax Calculator</h4></td></tr>
<tr><th>Fee1:</th><td><input type="text"/></td></tr>
<tr><th>Fee2:</th><td><input type="text" /></td></tr>
<tr><th>Fee3:</th><td><input type="text"/></td></tr>
<tr><th>Fee4:</th><td><input type="text"/></td></tr>
<tr><th>Total:</th><td><input type="text" id="totalAmount"/></td></tr>
</tbody>
</table>
<br/>
<button onclick="myFunction()">Calculate</button>

My script so far is this:

<script> 


function myFunction() {
    var x = document.getElementById("stateSel").selectedIndex;
    var y = document.getElementById("stateSel").options;
    var rowIndex = y[x];
    var fee1 = document.getElementById("rates").rows[rowIndex.index + 1].cells[2].value;

    alert(fee1.index);
}
 </script>

I'm using the alert to see if I can select a value from the table with rates. I keep getting an undefined value. Later, I want to use that value (from an appropriate row and column), along with other similarly selected values, to build a fee calculator. Help me get the values from table's rows and columns please.

Change the select to this:

<select id="stateSel">
  <option value="AR">Arkansas</option>
  <option value="AZ">Arizona</option>
  <option value="CA">California</option>
</select><br/>

Use this function which will grab the content

/**
 ** Define your own function and documentation
 **/
function myFunction() {
    var
        // Get the selected country. It should be the value of your option
        state = document.querySelector('#stateSel').value,

        // Get the value (text) of any selected _FX from the table
        fee1 = document.querySelector('#' + state + '_F1').textContent;

    alert(fee1);
}

You need to use "innerHTML" to pull the right data... See this fiddle for the solution

https://jsfiddle.net/shemdani/t5fmzbw4/7/

<table class="table table-striped table-hover table-bordered table-responsive" id="rates">
    <thead>
        <tr style="background-color: "><th>State</th><th>Fee1</th><th>Fee2</th><th>Fee3</th><th>Fee4</th><th>Fee5</th><th>Fee6</th></tr>
    </thead>
    <tbody id="ratesBody">
        <tr><td id="AR">Arkansas</td><td id="AR_F1">.04</td><td id="AR_F2">0.00</td><td id="AR_F3">0.00</td><td id="AR_F4">0.00</td><td id="AR_F5">0.00</td><td id="AR_F6">0.00</td></tr>
        <tr><td id="AZ">Arizona</td><td id="AZ_F1">.03</td><td id="AZ_F2">0.002</td><td id="AZ_F3">0.00</td><td id="AZ_F4">0.00</td><td id="AZ_F5">0.00</td><td id="F6_O">0.00</td></tr>
        <tr><td id="CA">California</td><td id="CA_F1">.03</td><td  id="CA_F2">0.002</td><td id="CA_F3">0.00</td><td id="CA_F4">0.00</td><td id="CA_F5">0.00</td><td id="CA_F6">0.00</td></tr>
    </tbody>
</table><br/>

<select id="stateSel">
      <option value="Arkansas">Arkansas</option>
      <option value="Arizona">Arizona</option>
      <option value="California">California</option>
    </select><br/>

<table class="table table-bordered">
<tbody>
<tr><td><h4>Tax Calculator</h4></td></tr>
<tr><th>Fee1:</th><td><input type="text"/></td></tr>
<tr><th>Fee2:</th><td><input type="text" /></td></tr>
<tr><th>Fee3:</th><td><input type="text"/></td></tr>
<tr><th>Fee4:</th><td><input type="text"/></td></tr>
<tr><th>Total:</th><td><input type="text" id="totalAmount"/></td></tr>
</tbody>
</table>
<br/>
<button onClick="calculate()">Calculate</button>

<script>
function calculate(){
   var x = document.getElementById("stateSel").selectedIndex;
    var y = document.getElementById("stateSel").options[x].value;
    alert ('selected state: ' + y);
    var rowIndex = x;
    var fee1 = document.getElementById("rates").rows[rowIndex + 1].cells[1].innerHTML;
    alert(fee1);
}

</script>

You don't use value on anything other than form fields. For all other elements, use textContent or innerHTML .

 function myFunction() { var x = document.getElementById("stateSel").selectedIndex; var y = document.getElementById("stateSel").options; var rowIndex = y[x]; var fee1 = document.getElementById("rates").rows[rowIndex.index + 1].cells[2].textContent; alert(fee1); } 
 <table class="table table-striped table-hover table-bordered table-responsive" id="rates"> <thead> <tr style="background-color: "><th>State</th><th>Fee1</th><th>Fee2</th><th>Fee3</th><th>Fee4</th><th>Fee5</th><th>Fee6</th></tr> </thead> <tbody id="rates"> <tr><td id="AR">Arkansas</td><td id="AR_F1">.04</td><td id="AR_F2">0.00</td><td id="AR_F3">0.00</td><td id="AR_F4">0.00</td><td id="AR_F5">0.00</td><td id="AR_F6">0.00</td></tr> <tr><td id="AZ">Arizona</td><td id="AZ_F1">.03</td><td id="AZ_F2">0.002</td><td id="AZ_F3">0.00</td><td id="AZ_F4">0.00</td><td id="AZ_F5">0.00</td><td id="F6_O">0.00</td></tr> <tr><td id="CA">California</td><td id="CA_F1">.03</td><td id="CA_F2">0.002</td><td id="CA_F3">0.00</td><td id="CA_F4">0.00</td><td id="CA_F5">0.00</td><td id="CA_F6">0.00</td></tr> </tbody> </table><br/> <select id="stateSel"> <option value="Arkansas">Arkansas</option> <option value="Arizona">Arizona</option> <option value="California">California</option> </select><br/> <table class="table table-bordered"> <tbody> <tr><td><h4>Tax Calculator</h4></td></tr> <tr><th>Fee1:</th><td><input type="text"/></td></tr> <tr><th>Fee2:</th><td><input type="text" /></td></tr> <tr><th>Fee3:</th><td><input type="text"/></td></tr> <tr><th>Fee4:</th><td><input type="text"/></td></tr> <tr><th>Total:</th><td><input type="text" id="totalAmount"/></td></tr> </tbody> </table> <br/> <button onclick="myFunction()">Calculate</button> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM