2016-04-28 12 views
0

Ich habe jQuery installiert und alle Variablen sind früher im Code festgelegt, aber alles nach der for-Schleife funktioniert nicht wie die Warnung ('Hallo'). Wenn irgendjemand etwas damit falsch sehen kann, sag es mir bitte.meine for-Schleife funktioniert nicht und ich weiß nicht warum

bearbeiten

var max=438; 
localStorage.setItem('max', max); 
var pi=[]; 
pi=JSON.parse(localStorage.getItem('pi')); 
var i=localStorage.getItem('i'); 
var url1=Math.floor((Math.random() * max) + 1); 
var url2=Math.floor((Math.random() * max) + 1); 
if(url1==url2){ 

url2=url2+2; 
if(url2>max){ 
    url2=url2-max; 
} 
} 
document.getElementById('imgimg1').src='../img/'+url1+'.gif'; 
document.getElementById('imgimg2').src='../img/'+url2+'.gif'; 
var v1=url1-1; 
var v2=url2-1; 
function vote1() { 
    pi[v1]=pi[v1]+(pi[v2]/pi[v1]); 
    localStorage.setItem('pi',JSON.stringify(pi)); 
    location.reload(); 
} 
function vote2() { 
    pi[v2]=pi[v2]+(pi[v1]/pi[v2]); 
    localStorage.setItem('pi',JSON.stringify(pi)); 
    location.reload(); 
} 
$(document).load(function(){ 
    for (var i = 0; i <max; i++) { 
     if(pi[i]===undefined||pi[i]===null||pi[i]==0){ 
      pi[i]=1; 
     } 
    } 
}); 
alert(pi); 

dies ist der vollständige Code

+2

Does 'max' einen Wert haben? – WillardSolutions

+3

'onload' ist keine gültige jQuery-Methode. Wenn Sie die Entwicklerwerkzeuge in Ihrem Browser öffnen und auf die Konsole schauen, finden Sie einen Fehler, der diese Tatsache angibt. – Jasper

+1

Der 'Alarm' ist nicht nach der for-Schleife. Die Schleife wird nur asynchron nach dem Laden des Dokuments ausgeführt. Der Alarm sollte dann bereits angezeigt worden sein. – migg

Antwort

0

mit diesen Versuchen:.!

/* assuming this */ 
var max = 4; // for example 
var pi = [0, 0, 0, 0]; 
/* end assuming this */ 

$(document).ready(function() { 
    for (var i = 0; i < max; i++) { 
     if(pi && pi[i] && pi[i] < 0) { 
      pi[i] = -1; 
     } else { 
      pi[i] = 1; 
     } 
    } 
    alert(JSON.stringify(pi)); 
}); 

Es sollte schreiben '[1, 1, 1, 1]'

[EDIT]

In Bezug auf Ihren gesamten Code, warum müssen Sie nach dem Dokument repetieren?

Warum init nicht pi wie folgt aus:

var max=438; 
localStorage.setItem('max', max); 
var pi=[]; 
pi=JSON.parse(localStorage.getItem('pi')); 
for(var i = 0; i < max; i++) { 
    pi[i] = 1; 
} 
[...] 
+0

Ich weiß nicht, warum ich Dokument bereit, aber Wenn ich das Dokument bereit nehme, funktioniert die Warnung() nicht. Ich brauche auch das, wenn pi [i] nicht gesetzt ist, weil ich das Array als eine Datenbank von Zahlen benutze und in der Lage sein muss, die Anzahl der Werte im Array zu erhöhen, ohne die bereits gesetzten zu beeinflussen, da sie sich mit ändern die Stimme funktioniert. –

+0

Sie können das Projekt unter https://preview.c9users.io/ibricchi/memer/images/index.html sehen –

+0

'localStorage' enthält' {max: "438", Länge: 1} 'das ist, warum' localStorage.getItem ('pi') 'ist null und so auch' pi' – Mino

1

Unter der Annahme, alle Variablen richtig eingestellt sind, sollte Ihr Code sein:

$(document).load(function(){ 
    for (var i = 0; i <max; i++) { 
     if(pi[i]===undefined||pi[i]===null||pi[i]==0){ 
      pi[i]=1; 
     } 
    } 
    alert('hello'); 
}); 

Vielleicht wird dies helfen, obwohl ich nicht tun wissen, worauf Sie diese Variablen einstellen. Bitte beachten Sie, dass ich anstelle des Ladens von Dokumenten das jquery ready-Ereignis verwende.

<div id="message"></div> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<script> 
 
    var max = 100; 
 
    var pi = []; 
 
    
 
    $(function() { 
 
    for (var i = 0; i <max; i++) { 
 
     if(pi[i]===undefined||pi[i]===null||pi[i]==0){ 
 
      pi[i] = 1; 
 
     } 
 
    } 
 
    $('#message').text(pi.length); 
 
}); 
 
</script>

+0

danke aber wenn ich pi danach warte es gibt null anstatt eine Reihe von 400 zurück Einsen (max ist auf 400 gesetzt) ​​ –

1
$(document).onload(function(){ 
    for (var i = 0; i <max; i++) { 
     if(typeof pi[i]==="undefined"||pi[i]===null||pi[i]==0){ 
      pi[i]=1; 
     } 
    } 
}); 
alert('hello'); 
1

Ich nehme an, Sie "max" auf einige positive Zahl haben. Ich denke, das Problem ist, dass Sie $ (Dokument) codiert. onload (... wenn Sie $ codiert haben sollten (Dokument) bereit (... Hoffnung, die hilft PK

+0

Ich habe es geändert, aber wenn ich pi warnt, gibt es null statt ein Array von 400 Einsen (max ist 400 gesetzt) ​​ –

Verwandte Themen