2011-03-16 114 views
21

這是一個讓我瘋狂的問題。這應該是我忽略的一些簡單而愚蠢的事情。 我在窗體中有一個多選框。我只是想獲得所選的值。在我的循環中,如果我使用警報,那麼我沒有問題。只要再做連接,我得到了錯誤的值「SelBranch [...],選擇」爲空或不是對象Javascript從多個選擇選項框中獲取值

 <form name="InventoryList" method="post" action="InventoryList.asp"> 
      <select name="SelBranch" class="bnotes" size="5" multiple="multiple"> 
      <option value="All">All</option> 
      <option value="001 Renton">001 Renton</option> 
      <option value="002 Spokane">002 Spokane</option> 
      <option value="003 Missoula">003 Missoula</option> 
      <option value="004 Chehalis">004 Chehalis</option> 
      <option value="005 Portland">005 Portland</option> 
      <option value="006 Anchorage">006 Anchorage</option> 
      <option value="018 PDC">018 PDC</option> 
      </select> 

     <input type="button" name="ViewReport" value="View" class="bnotes" onclick="GetInventory();"> 

    </form> 


    <script language="JavaScript"> 
     function GetInventory() 
     { 
     var InvForm = document.forms.InventoryList; 
     var SelBranchVal = ""; 
     var x = 0; 

     for (x=0;x<=InvForm.SelBranch.length;x++) 
     { 
      if (InvForm.SelBranch[x].selected) 
      { 
      //alert(InvForm.SelBranch[x].value); 
      SelBranchVal = SelBranchVal + "," + InvForm.SelBranch[x].value; 
      } 
     } 
     alert(SelBranchVal); 
     } 


    </script> 

回答

17

for循環得到了一個額外的運行。更改

for (x=0;x<=InvForm.SelBranch.length;x++) 

for (x=0; x < InvForm.SelBranch.length; x++) 
2

另外,更改此:

SelBranchVal = SelBranchVal + "," + InvForm.SelBranch[x].value; 

SelBranchVal = SelBranchVal + InvForm.SelBranch[x].value+ "," ; 

的原因是,在第一次的變量SelBranchVal將是空的

+0

這不僅僅是在最後一個額外的逗號,而不是在開始時額外的逗號? – nnnnnn 2014-03-30 02:11:47

3

在這裏,我發佈的答案僅供參考,可能會變得有用。

<!DOCTYPE html> 
<html> 
<head> 
<script> 
function show() 
{ 
    var InvForm = document.forms.form; 
    var SelBranchVal = ""; 
    var x = 0; 
    for (x=0;x<InvForm.kb.length;x++) 
     { 
      if(InvForm.kb[x].selected) 
      { 
      //alert(InvForm.kb[x].value); 
      SelBranchVal = InvForm.kb[x].value + "," + SelBranchVal ; 
      } 
     } 
     alert(SelBranchVal); 
} 
</script> 
</head> 
<body> 
<form name="form"> 
<select name="kb" id="kb" onclick="show();" multiple> 
<option value="India">India</option> 
<option selected="selected" value="US">US</option> 
<option value="UK">UK</option> 
<option value="Japan">Japan</option> 
</select> 
<!--input type="submit" name="cmdShow" value="Customize Fields" 
onclick="show();" id="cmdShow" /--> 
</form> 
</body> 
</html> 
4

看看HTMLSelectElement.selectedOptions

HTML

<select name="north-america" multiple> 
    <option valud="ca" selected>Canada</a> 
    <option value="mx" selected>Mexico</a> 
    <option value="us">USA</a> 
</select> 

的JavaScript

var elem = document.querySelector("select"); 

console.log(elem.selectedOptions); 
//=> HTMLCollection [<option value="ca">Canada</option>, <option value="mx">Mexico</option>] 

這也將在非multiple<select>元素


警告工作:支持此selectedOptions似乎預tty未知在這一點上