2017-01-28 104 views
0

我想根據下拉菜單中的值從表格中選擇一個值。我有這個至今:使用下拉菜單從表格中選擇一個值

<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> 

我的腳本到目前爲止是這樣的:

<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> 

我使用的警報,看看我是否可以選擇與利率表中的值。我不斷收到一個未定義的值。之後,我想使用該值(來自適當的行和列)以及其他類似選擇的值來構建費用計算器。請幫我從表格的行和列中獲取值。

+0

執行行和下拉選項具有相同的順序? (我的意思是這兩個城市在表格和選擇中都是以相同的順序排列的?) –

+0

沒有城市。下拉列表中有州和行列表中的州。費率表中的列是不同的費用。兩個站點的順序相同。 – TomBB

回答

-1

你不就比表單字段以外的任何使用value。對於所有其他元素,請使用textContentinnerHTML

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>

+0

謝謝。它運作良好。 @CodeWizard答案的好處是,下拉列表中的eh值和rates表中的值不必是相同的順序。 – TomBB

+0

@TomBB沒問題,但那不是你的問題。 –

+0

堆棧溢出永不止息。對解釋和對外部資源的引用給出正確答案的支持。 –

2

改變選擇這樣:

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

使用此功能,會搶了內容

/** 
** 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); 
} 
+1

太棒了。非常感謝。 – TomBB

0

你需要使用 「innerHTML的」 拉正確的數據...查看爲解決這個小提琴

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> 
+0

答案與我的不同之處是什麼,除了你的答案在技術上是不正確的,因爲你不需要使用'innerHTML'。你可以(在這裏,你應該)使用'textContent'。 –

+0

我從未說過我的回答與你的不同。當我發佈我的答案時,已經發布了3個答案,我甚至沒有意識到...... BTW innerHTML是正確的方法。樂於進一步討論這個問題! – spooky

+0

我的觀點是,當你發佈一個與已發佈的答案基本相同的答案時,Stack Overflow禮儀並不是很好。而且,如果你想要HTML,'innerHTML'只是正確的方法。如果你不這樣做,那麼textContent就是正確的方法,因爲性能,在這些情況下更好。 –

相關問題