I have an HTML table with one dropdown and am trying to add another. I simply just want all the same data in the table no matter which choice is chosen but am not sure what else to add once I add the second dropdown. With just the one, it runs and the tables fill up. I know it is probably just adding one or two lines but am not sure what they should be. It should look like the user chooses one of the first 3 selections from the dropdown, then based on that, the user gets every selection in the next dropdown, and then based on which selection is from the 2nd drop down, the table fills with the data from the JSON.
Here is the HTML table:
<table id="data_values">
<thead>
<TH></TH>
<TH id="osd">OSD</TH>
<TH id="army">Army</TH>
<TH id="navy">Navy</TH>
<TH id="af">Air Force</TH>
</thead>
<TR id="acat_i">
<TD>ACAT I</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
<TR id="acat_ii">
<TD>ACAT II-IV</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
<TR id="acat_iii">
<TD>ACAT III-IV</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
<TR id="bds">
<TD>BDS</TD>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE>
Here are the drop downs:
<body>
<!-----first drop down---->
<select id="test_drop">
<option value="selection1">selection1</option>
<option value="selection2">selection2</option>
<option value="selection3">selection3</option>
</select>
<!-----second drop down---->
<select id="data_options" onchange="myFunction()">
<option value="authority">Authority</option>
<option value="governance">Governance</option>
<option value="Management">Management</option>
<option value="use_cases">Use Cases</option>
<option value="community">User Community</option>
<option value="Definitions">Definitions</option>
<option value="Periodicity">Periodicity</option>
<option value="Start/End Criteria">Start/End Criteria</option>
<option value="it_system">IT System/Database</option>
<option value="Data Quality">Data Quality</option>
<option value="Tailoring">Tailoring</option>
<option value="Data Access">Data Access</option>
<option value="Handling and Security">Handling and Security</option>
<option value="Data Lifecycle">Data Lifecycle</option>
<option value="Historical Archives">Historical Archives</option>
<option value="Integration">Integration</option>
<option value="Review/Approval">Review/Approval</option>
</select>
And here is the code that I have:
<script>
function myFunction() {
var selection = document.getElementById("data_options").value;
//document.getElementById("test_drop").value;
//var optionSelected = this.option[this.selectedIndex];
//if(optionSelected.textContext != '
var table = document.getElementById("data_values");
$("#data_values tr").each(function () {
var $selection = $('#data_options').val();
$(this).find('td:not(:first-child)').each(function () {
var $col = $(this).closest('table').find('th').eq($(this).index()).attr('id');
var $row = $(this).closest('tr').attr('id');
$(this).text(orgs[$col][$row][$selection]);
})
})
}
I have all of the JSON data in the file as well under a variable called orgs. Here is a small snippet of the JSON data:
var orgs = {
osd: {
acat_i: {
authority: "unknown",
governance: "unknown",
management: "unknown",
use_cases: "unknown",
community: "unknown",
definitions: "unknown",
periodicity: "unknown",
start_end: "unknown",
it_system: "gems",
data_quality: "unknown",
tailoring: "unknown",
data_access: "unknown",
handling: "unknown",
data_lifecycle: "unknown",
historical: "unknown",
integration: "unknown",
review: "unknown"
},
acat_ii: {
authority: "unknown",
governance: "unknown",
management: "unknown",
use_cases: "unknown",
community: "unknown",
definitions: "unknown",
periodicity: "unknown",
start_end: "unknown",
it_system: "unknown",
data_quality: "unknown",
tailoring: "unknown",
data_access: "unknown",
handling: "unknown",
data_lifecycle: "unknown",
historical: "unknown",
integration: "unknown",
review: "unknown"
},
How can I write the code to populate after the second drop down is chosen instead of the first?