2011-03-16 31 views
1

這是一箇舊腳本,我的修改無效。香草JavaScript從選擇框中獲得價值?

var x=parent.frames[0].document.getElementsByTagName("INPUT"); 
for(a=0; a < x.length; a++){ 

我需要添加選擇框支持,所以我做了這個..

var x=parent.frames[0].document.getElementsByTagName("INPUT"); 
var y=parent.frames[0].document.getElementsByTagName("select"); 
x = x+y; 
for(a=0; a < x.length; a++){ 

for我們必須在這之後。

if(misc.length == 0){ 
    misc = misc + x[a].name + ':' + x[a].value + ':' + x[a].checked; 
} else { 
    misc = misc + "~cmd~" + x[a].name + ':' + x[a].value + ':' + x[a].checked; 
} 

有誰知道如何得到這個去所以選擇值也返回在數組中?

+0

不確定是否允許使用+運算符添加兩個數組。您可以改用concat方法。另外,使用上面的代碼得到的錯誤是什麼?請詳細說明 – 2011-03-16 08:28:52

回答

0

<select>元素必須以不同的方式讀取。你需要循環選擇。在這裏,你有一些示例代碼:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head><title></title> 
<script type="text/javascript"><!-- 
function fetchValues(){ 
    var s = document.getElementsByTagName("select"); 
    var output = ""; 
    for(var i=0, len=s.length; i<len; i++){ 
     output += s[i].name + ":\n"; 
     for(var j=0, lenj=s[i].options.length; j<lenj; j++){ 
      output += "\t- " 
        + s[i].options[j].value 
        + " (" + s[i].options[j].text + "): " 
        + (s[i].options[j].selected ? 'Yes' : 'No') 
        + "\n"; 
     } 
    } 
    alert(output); 
} 
//--></script> 
</head> 
<body> 

<form action="" method="get"> 
    <select name="single-value"> 
     <option value="s1">First single value</option> 
     <option value="s2">Second single value</option> 
     <option value="s3" selected="selected">Third single value</option> 
     <option value="s4">Fourth single value</option> 
    </select> 
    <select name="multiple-values" multiple="multiple" size="5"> 
     <option value="m1">First multiple value</option> 
     <option value="m2" selected="selected">Second multiple value</option> 
     <option value="m3">Third multiple value</option> 
     <option value="m4" selected="selected">Fourth multiple value</option> 
    </select> 
    <input type="button" onclick="fetchValues()" value="Fetch values"> 
</form> 

</body> 
</html> 

我建議你使用這些想法寫一個函數,它接受一個<select>節點作爲參數,並返回一個數組。

0

getElementsByTagName返回一個HtmlCollection,不幸的是,我們不能僅僅使用x.concat(y)來返回一個新的組合數組。

您可以創建一個新數組,然後通過x和y進行循環並在其上推送值。

var z = new Array(); 

for (var i=0; i < x.length; i++) { 
    z.push(x[i]); 
} 

for (var j=0; j < y.length; j++) { 
    z.push(y[j]); 
} 

var misc=""; 
// Loop through z and do whatever we want 
for (var k=0; k < z.length; z++) { 
    if(misc.length == 0){ 
     misc = misc + z[k].name + ':' + z[k].value + ':' + z[k].checked; 
    } else { 
     misc = misc + "~cmd~" + z[k].name + ':' + z[k].value + ':' + z[k].checked; 
    } 
}