2011-03-16 64 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未知在这一点上