2012-12-06 2 views
0
<select id="wbox" name="listbox" size="20"onchange="call(this)"> 
<optgroup label="Taxes"> 
<option value="1694" label="DNA-option1"></option> 
<option value="1642">RNA-option2</option> 

나는 선택한 옵션의 레이블을 추출하고 JavaScript 함수에서 사용하고자하는 목록 상자가 있습니다.javascript 함수에서 option 레이블로 var

function call(op) { 
     alert(op.label); 
     alert(op.name); 
     alert(op.value); 

     var x = op.label;   
    } 

그러나 항상 레이블로 반환되며 정의되지 않습니다. 나는 옵션 레이블이 html로 쓰여지는 방식을 바꾸려고 노력했다. 이것은 자바 스크립트 함수를 작성하는 최선의 방법이 아닐 수도있다. 나는 절대적으로 옵션 값을 사용할 수 없다. 이것은 고유 한 ID이며 다른 것에 사용된다. 내가 잘못하고있는 일이나이 일을하는 더 좋은 방법에 대한 제안?

+0

'op.selectedOptions [0]'했습니까? – zneak

+0

.textContent 그 끝에서 완벽하고 고마워! – user1868232

답변

0

선택한 <option>를 얻으려면, 당신은 selectedOptions 속성을 사용해야합니다. <select> 태그는 (선택 사항) 복수 선택을 지원할 수 있기 때문에이 배열입니다. 이 배열에는 <option> 태그 객체가 포함되어 있으므로 op.selectedOptions[0].textContent을 사용하여 라벨을 가져올 수 있어야합니다.

+0

op.selectedOptions [0] Firefox17 또는 IE9에서 .textContent가 작동하지 않습니다. – user1868232

+0

다음에'op.getElementsByTagName ("option") [op.selectedIndex] .textContent'가 수행해야합니다. – zneak

-1

는 것 같아요 :

<select id="wbox" name="listbox" size="20" onchange="call(this.selectedOptions)"> 
     <optgroup label="Taxes"> 
      <option value="1694" label="DNA-option1">RNA-option1</option> 
      <option value="1642" label="DNA-option2">RNA-option2</option> 
    </select> 

    <script type="text/javascript"> 
     function call(op){ 
      for(var i=0;i<op.length;i++){ 
       console.log('Label: '+ op[i].getAttribute('label')); 
      } 
     } 
    </script> 
관련 문제