아래는 폼값을 전달하기 전에 유효값을 체크하는 함수인데 익스플로어8과 크롬 파폭에선 엘러먼트가 하나이거나 여러개이거나 상관없이 getElementsByName 을 사용하여 배열로 처리하면 됐는데 익스플로어11에선 아래와 같이 엘러먼트가 한개일 때의 상황을 getElementById로 별도 처리 해줘야 한다는 사실이다. 쓸데없이 코드를 길게 만드는 염병(?)인 것이다. 이렇게 처리하지 않으면 자바스크립트 오류가 뜨기 때문에 매우 불편하다. 개발자 여러분들은 이 상황을 어떻게 생각하시는지...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | // JavaScript Code function datachk2(no) { if(no>0) { var rMode = document.getElementsByName('mode[]')[no]; var rDate = document.getElementsByName('regdate[]')[no]; var rNum = document.getElementsByName('num[]')[no]; var rName2 = document.getElementsByName('name2[]')[no]; } else { var rMode = document.getElementById('mode[]'); var rDate = document.getElementById('regdate[]'); var rNum = document.getElementById('num[]'); var rName2 = document.getElementById('name2[]'); } if(rMode.value=="입고입력"||rMode.value=="출고입력") { if(!rDate.value) { alert("날짜를 입력해 주세요"); rDate.focus(); return false; } else if(!rNum.value||isNaN(rNum.value)) { alert("권수를 입력해 주세요"); rNum.focus(); return false; } else if(!rName2.value) { alert("거래처를 입력해 주세요"); rName2.focus(); return false; } if(no>0) { for(i=0;i<no;i++){ document.getElementsByName('regdate[]')[i].disabled = false; document.getElementsByName('stat[]')[i].disabled = false; document.getElementsByName('num[]')[i].disabled = false; document.getElementsByName('name2[]')[i].disabled = false; document.getElementsByName('memo[]')[i].disabled = false; } } else { document.getElementById('regdate[]').disabled = false; document.getElementById('stat[]').disabled = false; document.getElementById('num[]').disabled = false; document.getElementById('name2[]').disabled = false; document.getElementById('memo[]').disabled = false; } } else { alert("Error!"); return false; } } |




덧글
해당 방법의 경우 원래부터 'getElementById'가 맞고, getElementsByName이 비표준이며, 잘못된 사용방식입니다.
doctype을 html5, 아니면 적어도 xhtml로 지정하면 크롬에서도 "당연히" 비표준 지원을 하지 않으니 동작하지 않는걸 확인할 수 있습니다.
... 그보다 getElementById, getElementByName의 사용법을 다시 공부하시는 걸 추천합니다.
getElementById가 필요한 경우가 있고, getElementByName가 필요한 경우가 있는데 둘의 구분을 하지 못한 상태로 쓰고 있는듯 하네요.
아래에 적은대로 id, name, class 등의 DOM 요소에 대해서 공부해보세요.
기초가 부족하면 이런 쓸데 없는 부분에서 삽질하기가 쉽죠.
도큐먼트부터 살펴보고 내가 어디 잘못했나 고심하면서
...옛날부터 jQuery를 사용하겠죠.
http://jquery.com/
다른 분들은 물론이고 이 글을 쓴 본인도 사실 마음 깊숙한 곳에서는
그렇게 바래마지 않을까 싶네요.
부디. 제발.
저도 참다참다 처음이자 마지막으로 댓글 씁니다.
눈이 아플라 그럽니다.
장님 코끼리 만지듯이 물어물어 더덕더덕 만들지 말고
그냥 기초공부부터 하셨으면 합니다.
남과 본인 그 모두를 위해서.
전부터 진지하게 뭘 이야기해도 자기 주장이 무조건 맞다고 우기는 인간에게 저런 왜곡된 설문조사만이 자신에게 당위성을 부여할 수 있으니 저러겠습니다만...
희망의 빛 이라는 사람. 이거 말고는 할 수 있는 것도 할 줄 아는 것도 불러주는 사람도 없습니다.
취업도 하다못해 119pc수리 창업도 힘든 사람인 거 다들 아시면서.
여러분의 관심이 한 사람을 그래도 살리고 있어요.
혼자 우울해하다 죽는 것보다는 사는 게 낫잖아요.