1. IE에서 작동하지만 Firefox는 작동하지 않습니다
IE 버전
다음과 같이 코드 코드를 복사하십시오.
<script type = "text/javaScript">
함수 checkall (str) // 전체 선택된 js
{{
var a = document.getElementsByName (str);
var n = A.length;
for (var i = 0; i <n; i ++)
{{
a [i] .Checked = Window.event.srcelement.Checked;
}
}
</스크립트>
Fire Fox 버전
다음과 같이 코드 코드를 복사하십시오.
<script type = "text/javaScript">
함수 checkall (str) // 전체 선택된 js
{{
var a = document.getElementsByName (str);
var n = A.length;
for (var i = 0; i <n; i ++) {
a [i] .Checked = document.getElementById ( "all");
}
}
</스크립트>
원인 분석 : Window.Event는 IE에서만 실행할 수 있으므로 JS는 Fire Fox에서 작동하지 않습니다. Fire Fox 버전에서 "id = all"의 확인란이 직접 선택된 다음 "name = str"의 확인란 그룹의 각 항목이 할당되어 선택 상태 동기화를 유지합니다.
2. document.getElementById ()와 docume의 차이점
위의 JS는 이름의 관점에서 확인란의 상태를 얻습니다. 그러나이 두 가지 방법은 사용 프로세스 중에주의를 기울이지 않으면 혼합되어 문제가 발생할 수 있습니다. 그 당시 나는 우연히 사용하는 것처럼 느꼈지만, 이름이 변경된 후에는 JS 코드가 실제로 작동하지 않았기 때문에 잘못 사용되었습니다.
(1) 문서. getElementByid ()는 한 페이지의 ID가 고유하므로 ID를 통해 특정 요소에 액세스하는 것입니다. 따라서이 함수는 요소를 반환합니다.
(2) document.getEmentsByName ()은 이름을 통해 요소에 액세스하는 것입니다. 한 페이지의 이름만이 유일한 이름이 아니기 때문에 교체 할 수 있으므로이 함수는 요소 세트를 반환합니다.
하나는 요소이고 다른 하나는 배열이기 때문에 정확하게 이루어 지므로 혼합시주의를 기울이지 않으면 오류가 발생하여 JS를 실행할 수 없습니다. 예를 들어, [i]. checked.getElementById를 선택했습니다 그러나 오류를보고하지 않으면 실제로 작동하지 않는 것 같습니다. 올바른 쓰기 방법은 [i] .Checked = Document.GetElementsByName ( "All" "All")이기 때문에 불만족스럽지 않습니다. ] 확인;이 변경 후에 효과는 동일했습니다. 우리 페이지에는 "name = all"이있는 하나의 확인란이 있기 때문에 [0]을 사용하여 요소에서 첫 번째 요소를 가져옵니다. 점검;