Vanilla JavaScript从选择框中获取价值?

时间:2011-03-16 07:58:16

标签: javascript forms

这是一个旧脚本,我的修改无效。

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

有没有人知道如何实现这一目标,所以选择值也会在数组中返回?

2 个答案:

答案 0 :(得分: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>节点为参数并返回数组的函数。

答案 1 :(得分: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;
    }
}