Problem mit Array und for Schleife
Philipp
- javascript
Hallo! Ich bastele an folgendem Script. Es soll verhindern, dass man bestimmte Seiten aufrufen kann. Nur leider scheint es nicht zu funktionieren. Der Teil der nicht zu funktionieren scheint ist wohl :
for (var i=0; i < Erlaubt.length; i++)
else if(URL != Erlaubt[i]) {
aber ich weiss nicht wieso!
Wäre nett, wenn mir ja jemand helfen könnte!
<html>
<head>
<title>link.html</title>
<script language="JavaScript">
<!--
var Erlaubt = new Array("http://www.hornung.net/","http://www.gmx.de/");
function Go(URL) {
if (URL == null) {
document.GoURL.URL.focus(); }
for (var i=0; i < Erlaubt.length; i++)
else if(URL != Erlaubt[i]) {
alert("Die Seite ist nicht zugänglich für Sie!"); }
else {
parent.frames[1].location.href=URL; } }
//-->
</script>
</head>
<body bgcolor="e1e1e1">
<form name="GoURL" action="">
<input type="text" name="URL" value="http://" size="50">
<input type="button" name="" value="Gehe zu" onClick="Go(document.GoURL.URL.value)">
</form>
</body>
</html>
Hi,
Der Teil der nicht zu funktionieren scheint ist wohl :
for (var i=0; i < Erlaubt.length; i++)
else if(URL != Erlaubt[i]) {
else ist nur als Bestandteil von if (bedingung) { } else { } sinnvoll, nicht jedoch im Zusammenhang mit for.
cu,
Andreas
else ist nur als Bestandteil von if (bedingung) { } else { } sinnvoll, nicht jedoch im Zusammenhang mit for.
Tut mir leid, ich verstehe dass nicht? Soll das heissen, dass ich aus:
for (var i=0; i < Erlaubt.length; i++)
else if(URL != Erlaubt[i]) {
alert("Die Seite ist nicht zugänglich für Sie!"); }
for (var i=0; i < Erlaubt.length; i++)
if(URL != Erlaubt[i]) {
alert("Die Seite ist nicht zugänglich für Sie!"); }
machen soll?
Vom ganzen Rest mal abgesehen:
Variablen haben in PHP die Form $name... das heisst du schreibst:
$erlaubt = array();
if $URL== etc.
mfG
A. Puccio
Hi,
Vom ganzen Rest mal abgesehen:
Variablen haben in PHP die Form $name... das heisst du schreibst:
Aufwachen...
Es geht nicht um PHP...
cu,
Andreas
Ich habe das Script jetzt so notiert
<script language="JavaScript">
<!--
var Erlaubt = new Array("http://www.hornung.net","http://www.gmx.de");
function Go(URL) {
for (var i=0; i < Erlaubt.length; i++)
if(URL != Erlaubt[i]) {
parent.frames[1].location.href=URL; }
else {
alert("Diese Seite ist für Sie gesperrt!"); } }
//-->
</script>
es funktioniert auch, nur wenn man eine seite aufruft bekomme ich immer genau so viele meldungen wie ich seiten im array notiert habe! wie kann ich das ändern?
mfg
Philipp
Hallo,
es funktioniert auch, nur wenn man eine seite aufruft bekomme ich immer genau so viele meldungen wie ich seiten im array notiert habe! wie kann ich das ändern?
Die brichst die for-Schleife mit break ab, sobald eine unerlaubte Seite auftritt.
Gruß,
Henning
Moin!
<script type="Text/JavaScript">
<!--
var Erlaubt = new Array("http://www.hornung.net","http://www.gmx.de");
function Go(URL) {
var flag=false;
for (var i=0; i < Erlaubt.length; i++) {
if(URL == Erlaubt[i]) {
var flag =true; // Flagvariable auf true setzen
var i = Erlaubt.length; // Das bricht die Schleife ab. Dies ist hier nicht notwendig, aber macht das Programm schneller.
} // end if
} // next i
if (flag) {
parent.frames[1].location.href=URL;
} else {
alert("Diese Seite ist für Sie gesperrt!");
/* hübscher wäre:
parent.frames[1].document.write("<h1 style="color: red; border: thin solid red;">Die Seite ""+URL+"" dürfen Sie nicht aufrufen.") */
} // end if
return flag;
}
//-->
</script>
Jetzt wo die Klammern ordentlich stehen ist es doch viel besser zu erkennen - oder? Damit ist klar, warum es klug ist den Quelltext zu strukturieren.
Das alert() war innerhalb der for- Schleife, wurde also bei jeden Durchlauf mit ausgeführt. Sowas macht man mit Flag- Variablen und wertet diese nach der Abarbeitung der Schleife aus.
Funktionen sollten immer etwas zurückgeben, auch wenn es nicht ausgewertet wird. Aber dies ist das Wesen von Funktionen.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi,
for (var i=0; i < Erlaubt.length; i++) {
if(URL == Erlaubt[i]) {
var flag =true; // Flagvariable auf true setzen
var i = Erlaubt.length; // Das bricht die Schleife ab. Dies ist hier nicht notwendig, aber macht das Programm schneller.
Holzhammer-Methode.
Außerdem: warum deklarierst Du i neu als Variable? Wenn überhaupt auf diese Art, dann ohne das var davor.
Gleiches gilt für das var vor flag = true;
Um eine Schleife abzubrechen, gibt es
break;
Jetzt wo die Klammern ordentlich stehen
Du findest KR-Klammerung ordentlich? Ich nicht...
cu,
Andreas
Moin!
Holzhammer-Methode.
Ja. Die erschlägt alles. Und das ist gut so.
Außerdem: warum deklarierst Du i neu als Variable? Wenn überhaupt auf diese Art, dann ohne das var davor.
Das hab ich einfach mal aus dem Original übernommen.
Gleiches gilt für das var vor flag = true;
Stimmt. Hier war das (auch) unnötig.
Um eine Schleife abzubrechen, gibt es
break;
Womöglich. In dieser Sprache. Ich versuche einzigartige Konstrukte zu vermeiden. Das senkt den Fehlersuchaufwand, wenn ich mal in einer anderen Sprache progge.
Jetzt wo die Klammern ordentlich stehen
Du findest KR-Klammerung ordentlich? Ich nicht...
Ich klammere nie :)
Im Ernst: Da gibt es durchaus unterschiedliche Ansichten. Ich finde es so sehr übersichtlich. Angesichts des Originals wirst Du mit mir vollkommen übereinstimmen...
Nichts für ungut, aber gabs da nicht irgendwo eine Frage, wo Du wirklich hättest helfen können?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®