2010-08-06 3 views
0

select 함수가 변경 될 때마다 호출되는 함수가 있습니다. select에 ID가 "foo"이면 ID가 "foo_other"인 텍스트 필드가 있고 기본적으로 "display : none"으로 스타일이 지정됩니다.동적 인 IE 8과 getElementById()는 오류를 던졌습니다.

"기타"값이 선택에서 선택되면 함수는 텍스트 필드를 표시하고 포커스를 설정해야합니다. "기타"가 선택되면 필드를 숨기고 입력 된 내용을 모두 제거해야합니다.

FF로 작동하면 IE에서 "필요한 개체"오류가 발생합니다. 나는 동적 변수 주위에 eval()하는 것을 피하려고 노력했다. 어떤 도움을 주셔서 감사합니다.

코드 :

 
function checkOther(inObj){ 
    var other_form_id = inObj.name + "_other"; 
    if(inObj.value == 'Other') 
    { 
     document.getElementById(other_form_id).style.display = 'inline'; 
     document.getElementById(other_form_id).focus(); 
    } 
    else 
    { 
     document.getElementById(other_form_id).style.display = 'none'; 
     document.getElementById(other_form_id).value = ''; 
    } 
} 
+0

일부 질문에 대해 만족할만한 대답이있는 경우 허용되는 것으로 표시하는 것이 좋습니다. –

답변

0

내 생각 엔 당신이 (무효 인) 하나 개의 문서에 여러 개의 ID를 가지고있다, 그리고 IE는 FF가보다 그것에 대해 더 까다 롭고입니다. 그럴 수 있니?

+0

나는 체크했다. 나는 유일한 ID를 가지고있다. .. 고마워. 그리고 나는 "받아 들인"일부를 더 의식하려고 노력할 것이다. – Don

+0

@Don strange. 실제 ID를 경고 (alert)하고 해당 HTML과 함께 편집 할 수 있습니까? –

+0

도움을 주셔서 감사합니다. 그것은 IE가 아니라는 것이 밝혀졌습니다. 그것은 "ME"였습니다 ... 나는 첫 번째 ID의 이름을 변경 했으므로 끝에 "_other"를 추가하려고 시도했을 때 다른 이름이었습니다. 일치시킬 텍스트 항목의 이름을 바꾸는 것을 잊었습니다. 그것을 확인해 주셔서 감사합니다. 그래서 나는 더 깊게 파고 있다는 것을 알았습니다. – Don

0

Microsoft의 바보 같은 바보가 먼저 ID 또는 이름이됩니다. 동적으로 생성 된 javascript가 있고 하나의 HTML 요소 (입력)의 이름과 ID가 다릅니다. 그러나 지정된 ID로 요소를 가져 오는 대신 IE8의 바보가 해당 NAME의 첫 번째 요소를 가져옵니다.

나는 그들이 심지어 내가 창 (비주얼 스튜디오) 개발자 15+ 년을 일하는 바보입니다 생각,하지만 난 그런 stupidness이 ...

심지어 나중에, 희망이 다른 사람을 도움이 될 것 기대하지 않았다 , 게시물의 저자가 아닙니다.

내 솔루션은 id 태그에 "id_"접두사를 추가하여 바보가 정확히 동일한 이름을 얻지 못하도록하려는 것입니다. 내 경우에는 javascript에 id 태그를 사용하고 양식을 보낼 때 DB에 저장하기 위해 name 태그를 사용합니다.

관련 문제