大量のdivを隠して表示する大きなjavascript関数init()があります。ページが読み込まれると、javascript関数が以下のスクリプトによってトリガされます。なぜ私のJavaScript関数が動作しない場合があります
<script type="text/javascript">
$(document).ready(function() {
init();
});
</script>
ほとんどの場合、JavaScriptは以下のスクリプトによってトリガーされます。しかし、しばらくの間、スクリプトinit()は起動されていないようです。関数init()の約20倍の約1回がトリガされていないようです。他のすべての19回ページとjavascriptは間違いなく正常に動作しています。このエラーが発生する状況は、F5を20回押したときにこのエラーが発生するため、通常と変わらないようです。
init()の最初のステートメント(alert( "function called");)が呼び出されなかったため、init()が全く呼び出されていないように見えました。 JavaScriptが正常に動作していた場合は、警告メッセージが表示され、ページはエラーなく正常にロードされました。
私は、window.onloadなどのjavascriptとページの最後に、このスクリプトを置くことをトリガーするさまざまな方法を試してみました:init()メソッドをトリガーするためにすべてのこれらの異なる方法
<script type="text/javascript">init();</script>
作るように見えませんでした任意の違い。
これはINIT()関数である:
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;
}
これは、init()関数から呼び出されるhighlightboxinitiate関数である:
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関数であります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; }
は、私がページを正しく初期化()関数の最初の文が開始されなかったときに実行されなかったための機能がOKであることを印象を持っています。
クロスブラウザーがこの問題に影響していないことを確認しました。この問題はすべてのブラウザで発生します。
エラーが発生すると、Firebugコンソールにエラーメッセージが表示されません。
私は多くの検索とデバッグを行っていますので、どんな援助も大歓迎です。
Yikes。私はそれを維持していないとうれしいです。 –
明確にする(私はあなたがこれをチェックしたが、あなたの質問には表示されないと確信している):init関数が実行されていないとき、ブラウザのコンソールに何かエラーがあるのでしょうか? – Marcin
いいえ私はどんなエラーも見当たりません – BastiaanWW