많은 javascript를 숨기고 표시하는 큰 자바 스크립트 함수 init()이 있습니다. 페이지가로드되면 javascript 함수가 아래 스크립트에 의해 트리거됩니다.왜 내 자바 스크립트 함수가 작동하지 않습니다
<script type="text/javascript">
$(document).ready(function() {
init();
});
</script>
대부분의 경우 자바 스크립트는 아래 스크립트에 의해 실행됩니다. 그러나 한 번씩 init() 스크립트가 실행되지 않는 것처럼 보입니다. 함수 init()의 20 배 정도가 트리거되지 않는 것 같습니다. 다른 모든 19 번 페이지와 자바 스크립트는 오류없이 잘 작동합니다. F5 키를 20 번 누르면이 오류가 발생하므로이 오류가 발생하는 상황은 정상적인 것과 다를 바없는 것처럼 보입니다.
init()의 첫 번째 명령문 (alert ("function called");)이 호출되지 않았기 때문에 init()이 전혀 호출되지 않은 것으로 확인되었습니다. 자바 스크립트가 잘 작동하는 경우 경고 메시지가 표시되고 페이지가 오류없이 올바르게로드되었습니다.
<script type="text/javascript">init();</script>
그 모든 다른 방법을 만들 것 같지 않았다 초기화()을 트리거 :
나는 같은 창로드로하고 페이지의 끝에서이 스크립트를 넣어 자바 스크립트를 실행할 수있는 여러 가지 방법을 시도 어떤 차이.function highlightboxinitiate(divnr,linenr,load2__gl_var) {
getvariables();
for (i = 1; i < 8; i++) {document.getElementById("nextnr" + i).style.display = "none";}
if(counttab__gl_var[linenr]>(9 + settab__gl_var[linenr]) && load2__gl_var==0){
document.getElementById("nextnr" + linenr).style.display = "block";}
for (i = 1; i < 8; i++) {document.getElementById("prevnr" + i).style.display = "none";}
if(settab__gl_var[linenr] >2 && load2__gl_var==0){
document.getElementById("prevnr" + linenr).style.display = "block";}
for (i = 1; i < 8; i++) {document.getElementById("pagenr" + i).style.display = "none";}
if(load2__gl_var==0 && counttab__gl_var[linenr]>9){
document.getElementById("pagenr" + linenr).style.display = "block";}
if(load2__gl_var==1){
for (i = 1; i < 8; i++) {document.getElementById("renextnr" + i).style.display = "none";}
if(counttab__gl_var[linenr]>(9 + settab__gl_var[linenr])){
document.getElementById("renextnr" + linenr).style.display = "block";}
for (i = 1; i < 8; i++) {document.getElementById("reprevnr" + i).style.display = "none";}
if(settab__gl_var[linenr] > 2){
document.getElementById("reprevnr" + linenr).style.display = "block";}
for (i = 1; i < 8; i++) {document.getElementById("repagenr" + i).style.display = "none";}
if(counttab__gl_var[linenr]>9){
document.getElementById("repagenr" + linenr).style.display = "block";}
}
var box = document.getElementById("boxDiv").getElementsByTagName("a");
current_tab__gl_var=linenr;
for (i = 0; i < box.length; i++) {unselectboxinitiate(divnr,i);}
tabselnr = linenr-1;
if (tabselnr<=2){box[tabselnr].className="selected1";}
if (tabselnr>2 && tabselnr<=5){box[tabselnr].className="selected2";}
if (tabselnr==6){box[tabselnr].className="selected3";}
for (j = 1; j < 10; j++) {
for (i = 1; i < 8; i++) {
document.getElementById("list"+j+"n"+i).style.display = "none";
document.getElementById("it"+j+"n"+i).style.display = "none";}
document.getElementById("list"+j+"n"+linenr).style.display = "block";
document.getElementById("it"+1+"n"+linenr).style.display = "block";}
}
이되고있는 highlightlistinitiate 함수이다
function init(){
pauzereload__gl_var=1;
load2__gl_var=0;
//Hide bus options:
var boxbusnotshow = document.getElementById("boxDiv").getElementsByTagName("a");
boxbusnotshow[3].style.display="none";
boxbusnotshow[4].style.display="none";
boxbusnotshow[5].style.display="none";
document.getElementById("loadingdiv").style.display = "none";
document.getElementById("loadingdivdate").style.display = "none";
getvariables(); //Get variables generated by the php script, to get activetab
var a=1; b=1;
highlightboxinitiate(a,activetab__gl_var,load2__gl_var);
highlightlistinitiate(a,b);
pauzereload__gl_var=0;
}
이 초기화() 함수로부터 호출되는 highlightboxinitiate 함수이다
이
는 초기화() 함수 init() 함수에서 호출 된 :function highlightlistinitiate(divnr,linenr) {
var box = document.getElementById("listmenu").getElementsByTagName("a");
current_list__gl_var=linenr;
for (i = 0; i < box.length; i++) {
box[i].className="unselected";}
box[linenr-1].className="selected";
for (j = 1; j < 10; j++) {
for (i = 1; i < 8; i++) {
document.getElementById("it"+j+"n"+i).style.display = "none";}}
document.getElementById("it"+current_list__gl_var+"n"+current_tab__gl_var).style.display = "block";
}
이것은 getvariables fu입니다. highlightboxinitiate 함수에서 호출되는 nction :
function getvariables(){
counttab__gl_var = new Array (7);
settab__gl_var = new Array (7);
counttab__gl_var [1] = 83; settab__gl_var [1] = 0; activetab__gl_var = 2; counttab__gl_var [2] = 111; settab__gl_var [2] = 0; activetab__gl_var = 2; counttab__gl_var [3] = 137; settab__gl_var [3] = 0; activetab__gl_var = 2; counttab__gl_var [4] = 1; settab__gl_var [4] = 0; activetab__gl_var = 2; counttab__gl_var [5] = 1; settab__gl_var [5] = 0; activetab__gl_var = 2; counttab__gl_var [6] = 1; settab__gl_var [6] = 0; activetab__gl_var = 2; counttab__gl_var [7] = 1; settab__gl_var [7] = 0; activetab__gl_var = 2; }
나는 페이지가 제대로 초기화() 함수의 첫 번째 문을 시작하지 않은 경우에 실행되지 않았기 때문에 기능이 확인되어 있다는 인상을 가지고있다.
크로스 브라우저가이 문제에 영향을 미치지 않는지 확인했습니다. 이 문제는 모든 브라우저에서 발생합니다.
오류가 발생하면 방화 광 콘솔에 오류 메시지가 표시되지 않습니다.
많은 검색과 디버깅을 해 주셨습니다. 도움을 주시면 감사하겠습니다.
Yikes. 나는 그것을 유지하지 않기 때문에 기쁘다. –
명확해야 함 (이 체크 표시를했지만 질문에 표시되지 않음) : init 함수가 실행되지 않으면 브라우저의 콘솔에 오류가 표시됩니까? – Marcin
아니요 오류가 표시되지 않습니다 – BastiaanWW