2011-04-14 4 views
1

JavaScript를 사용하여 대기업에서 관리하는 사이트의 라디오 버튼 확인 상태를 업데이트하려고합니다. 여기에 문제가 있습니다. 페이지에는 두 개의 관련 라디오 버튼에 대한 중복 ID와 이름이 있으며 이름없는 테이블 행의 셀에 있습니다. 첫 번째 것을 선택하고 싶습니다. 어떤 도움을 주셔서 감사합니다.JavaScript를 사용하여 표 셀 내의 라디오 버튼 업데이트

다음은 다음은 내가 첫 번째 라디오 옵션을 선택 라디오를 업데이트하기 위해 노력했습니다 다양한 자바 스크립트 예제입니다 기본 HTML

<table cellspacing='0' cellpadding='0' border='0'> 
    <tr> 
     <td> 
      <img alt='spacer' src='../Images/blank.gif' width='10' height='1' border='0' /> 
     </td> 
     <td id='A-Q1_0200-1' valign='top'> 
      <font size='-1'> 
       <input type='radio' name='Q1_0200' id='Q1_0200' value='1' onclick='FormChanged()' 
       class='bodyInput' /> 
      </font> 
     </td> 
     <td colspan='1' valign='top' id='A-Q1_0200-1-T'> 
      <font size='-1'> 
       &nbsp;Yes 
      </font> 
     </td> 
     <td> 
      <font size='-1'> 
       &nbsp; 
      </font> 
     </td> 
     <td id='A-Q1_0200-2' valign='top'> 
      <font size='-1'> 
       <input type='radio' name='Q1_0200' id='Q1_0200' value='2' checked='checked' onclick='FormChanged()' 
       class='bodyInput' /> 
      </font> 
     </td> 
     <td colspan='1' valign='top' id='A-Q1_0200-2-T'> 
      <font size='-1'> 
       &nbsp;No 
      </font> 
     </td> 
    </tr> 
</table> 

입니다.

document.getElementById('A-Q1_0200-1').Q1_0201.checked='checked'; 

    document.getElementById('A-Q1_0200-1').radio[0].checked=TRUE; 

    document.getElementById('Q1_0200').checked=TRUE 

    document.getElementById('Q1_0200').checked=’TRUE 
+0

첫 번째 라디오 요소를 선택하지 않은 상태에서 '확인'으로 변경하려고합니다. –

답변

0

당신은 중복 ID를 가지고 getElementById()이 일을 기대할 수 없다. ID는 "ID"를 의미하며 각 ID는 고유해야합니다. 그래서 3 번째와 4 번째 예제가 실패한 것입니다.

다음 코드는 id가 <td> 인 부모를 선택한 다음 input이라는 첫 번째 자손을 선택하고 checked 속성을 설정합니다.

document.getElementById('A-Q1_0200-1').getElementsByTagName("input")[0].checked = "checked"; 
+0

고마워요.이 말이 완벽합니다. 나는 그것을 시도했지만 그것은 작동하지 않았다. 또한 마지막에 true 또는 'checked'를 사용할지 여부를 결정하는 것은 무엇입니까? (나는 둘 다 시도했다.) –

+0

Jesse, IDE 밖으로 시도했다. Firebug를 사용했다. 그것은 작동합니다 - 고마워요. 유일한 문제는 라디오 버튼을 "checked"로 변경하는 동안 해당 선택 항목을 기반으로하는 계단식 텍스트 필드를 열지 않는다는 것입니다. 아마도 나는 그것을 위해 뭔가 다른 것을 시작해야 할 것입니다. –

+0

다른 스크립트 뒤에있는 함수를 실행하기 만하면됩니다. 다시 한 번 감사드립니다! –

0

여기는 JSFiddle Demo:입니다. 이렇게하면 radio 유형의 첫 번째 요소를 선택할 수 있습니다.

한 가지 방법은 getElementsByTagName을 사용하고 라디오 유형의 첫 번째 발생을 확인하지만 ID는 고유해야합니다. 그것은 당신의 통제에서처럼 보인다 :

var myInput = document.getElementsByTagName('input'); 

for(var i=0; i<myInput.length; i++){ 
    if(myInput[i].type == 'radio'){ 
     console.log(myInput[i]); 
     break; 
    } 
} 
을 console.log는 당신에게 다음과 같은 요소를 줄 것

:

<input type=​"radio" name=​"Q1_0200" id=​"Q1_0200" value=​"1" onclick=​"FormChanged()​" class=​"bodyInput">​ 

거기에서 당신에

가 선택한 요소의 true로 확인 설정할 수 있습니다 : myInput[i].checked = true; 또는 myInput[i].checked = 'checked';

+0

감사합니다.이 옵션도 테스트 해 보겠습니다. 내가 차이를 만들 것이라고 생각하지는 않지만 개발중인 iOS 앱을 통해 Apple xCode를 통해 테스트하고 있습니다. 다시 페이지의 다른 모든 JS (텍스트 필드 업데이트)는 정상적으로 작동합니다. 다른 웹 사이트에서이 js를 테스트하여 작동하는지 확인할 수있는 다른 도구가 있습니까? (예 : Aptana 또는 다른 도구) –

+0

@user 크롬 개발자 도구 또는 firefox의 방화범을 사용하여 js를 디버그 할 수 있습니다. – kjy112

+0

감사합니다. 방화범이 끌려 도움이되었습니다. –

0

getElementById는 처음 발견 된 요소를 반환합니다. 그리고 그것을 확인하고 싶다면 다음을해야합니다 : document.getElementById('Q1_0200').checked = 'checked';

+0

이 옳습니다. 이것은 귀하의 상황에, 그냥 html의 순서가 변경되지 않습니다기도하기 위해 작동합니다. – jessegavin

+0

답장을 보내 주셔서 감사합니다. 그러나 이것은 저에게 효과가 없었습니다. 어떤 CSS 또는 다른 스크립트가 js를 통해 라디오 버튼에 액세스 할 수 없게 만들 수 있습니까?텍스트 필드를 선택하고 업데이트 할 수있었습니다. –

+0

@ user689852 id = Q1_0200 어딘가에 무선 입력 요소가 아닌 다른 요소가있을 수 있습니까? 왜/실패했는지에 대한 더 많은 정보를 제공하십시오. Firebug 및 Chrome 개발자 도구는 코드 디버깅을위한 훌륭한 도구입니다. – LoveGandhi