2011-03-16 7 views
1

이 오래된 스크립트 내 수정이 작동하지 않습니다.바닐라 자바 ​​스크립트는 선택 상자에서 값을 얻을?

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

내가 .. 내가 이런 짓을 수 있도록 선택 상자에 대한 지원을 추가해야 우리가 이것을 가지고 for

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++){ 

.

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 메소드를 사용할 수 있습니다. 또한, 오류는 위의 코드를 얻을 무엇인가? 자세한 내용은 제발 –

답변

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; 
    } 
}  
관련 문제