• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

for-Bedingung ändern innnerhalb eines äußeren loops

romario

New member
wie kann ich eine for-Bedingung innerhalb einer Schleife ändern?
in folgendem code möchte ich bei i=10 die innenliegende for-Bedingung ändern in (c=99;c=0;c--)

Code:
for (i=0;i<15;i++) {
   ...
   for (c=0;c<100;c++) {
      ...
   }
}

geht das?
 
Du solltest dir auf jeden Fall if/else anschauen, das ist nämlich eine der Grundlagen von JavaScript...
Der Aufbau ist folgender:
Code:
if(variable == "wert"){
//tu dies
}
else{
//tu das
}

Nun kannst du dich ja mal an einen Versuch wagen ;)
 
if else ist mir bekannt, aber das verdoppelt die länge meines codes, bzw. verlängert diesen um mehr als 20 Zeilen.
nehmen wir doch ein extrembeispiel:
man hat einen loop, der 100 codezeilen beinhaltet. bei jedem schleifendurchlauf soll sich nur eine zeile davon ändern.
die lösung kann doch nicht sein, den code auf das 100-fache aufzublähen.
würde man da ein array mit den 100 verschiedenen zeilen bilden und jeweils eintrag x davon abfragen?
 
Julian, bei diesem Konstrukt muss er natürlich den Schleifeninnen Code in beide Abschnitte packen, also eine Verdoppelung.
Kann man sich aber sparen, wenn man den Code vorher in eine Variable packt und im Schleifenkörper die Variable aufruft.
Dennoch denke ich, dass man das zugrundeliegende Problem vielleicht ganz anders lösen kann. Häufig haben solche wilden Schleifenkonstruktionen einen Denkfehler.
 
Julian, bei diesem Konstrukt muss er natürlich den Schleifeninnen Code in beide Abschnitte packen, also eine Verdoppelung.
Kann man sich aber sparen, wenn man den Code vorher in eine Variable packt und im Schleifenkörper die Variable aufruft.
Stimmt. Das kann man verbessern.

Dennoch denke ich, dass man das zugrundeliegende Problem vielleicht ganz anders lösen kann. Häufig haben solche wilden Schleifenkonstruktionen einen Denkfehler.
Ja, mal schauen, was romario dazu sagt...


EDIT: Ach schade, jetzt hab ich gar nicht auf meinen 1.000ten Beitrag geachtet. Das ist nämlich schon der 1002. ;)
Eigentlich wollte ich mir den 1000ten für irgendwas besonderes "aufheben" :D
 
Zuletzt bearbeitet:
Es lag ein übler gedankenfehler vor bei mir, aber die fragestellung ist wohl dennoch relevant.
ok, gehen wir das Problem von "hinten" an.

kuckt euch diese Testseite an und probiert die Funktionalität aus.
ich möchte nun im Tab stream&ciphertext das untere "Kryptobild" horizontal gespiegelt anzeigen lassen.
Ich muß also die columns vertauschen oder besser gesagt die Sortierung jeder Reihe umkehren. Über die Änderung der Schleifenbedingung geht dies natürlich nicht :(

Habt ihr einen Tip?
 
Zuletzt bearbeitet:
wenn du unter passphrase was eingegeben hast und auf "make images" geklickt hast, hast du die zwei kryptobilder gesehen.
jedes der bilder besteht aus vielen hundert bildern (jedes hat vier pixel).
dabei geht es nun nur um das untere der beiden = schleifendurchlauf 2.
jedes dieser 4-pixel-bilder soll horizontal gespiegelt werden aber auch die anordnung der bilder soll horizontal gespiegelt werden = der gesamte inhalt.
das hast du verstanden, oder?
also schelifendurchlauf 1 und 3 sollen so bleiben wie sie sind, aber in durchlauf 2 soll das generierte Bild exakt korizontal gespiegelt zum aktuellen sein.
wenn du dir den code ankuckst, der die bilder generiert, würdest du sagen, das ist einfach zu machen?
wenn es aufwändiger ist, was würdest du für die fertige lösung verlangen (in €)?
 
Zuletzt bearbeitet:
Die 2x2 Pixelbilder bekommst du nur mit CSS gespiegelt (außer du machst dir eine Funktion, die dir die Dateinamen so tauscht, dass es gespiegelt aussieht) und dann kannst du auch gleich den kompletten Kontainer spiegeln:
Code:
<!DOCTYPE html>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Fenstertitel</title>
<style type="text/css">
div {
	width: 150px;
}
.horizontal {
	transform: matrix(1, 0, 0, -1, 0, 0);
}
.vertical{
	transform: matrix(-1, 0, 0, 1, 0, 0);
}
</style>
</head>
<body>
<div class="horizontal">horizontal</div>
<div class="vertical">vertical</div>
</body>
</html>
 
danke für diesen interessanten ansatz!
aber warum soll ich das endergebnis spiegeln, wenn man doch das original gleich gespiegelt anzeigen lassen könnte?
es mag an meiner unklaren ausdrucksweise liegen, aber warum soll ich eine "falsche" anzeige so modifizieren, daß sie paßt, anstatt gleich die richtige anzeige erzeugen?
 
Die 2x2 Pixelbilder bekommst du nur mit CSS gespiegelt (außer du machst dir eine Funktion, die dir die Dateinamen so tauscht, dass es gespiegelt aussieht) und dann kannst du auch gleich den kompletten Kontainer spiegeln:

Hi kkapsner,

geht das auch ohne eine feste Breite anzugeben?
sonst müßte ich die Breite per JS auslesen und an CSS übergeben, oder?

Ich dachte mir die 2x2 bilder zu spiegeln ist noch das einfachste, weil ich einfach immer das komplementär bild nehme, wie du sagst.
aber die restliche anpassung des codes ist schwieriger für mich.
Im Idealfall macht das jemand für mich und ich zeige mich erkenntlich.
 
Zuletzt bearbeitet von einem Moderator:
Klar geht das auch ohne feste Breite - hab' die nur genommen, damit der Text nicht ganz rechts klebt.

Eine Spiegelung ist eigentlich etwas anderes als ein Komplemenärbild... aber du kannst da natürlich schon das gespiegelte Bild nehmen. Dann hast du aber immer noch das Problem, dass du deine Schleifen umbauen musst. Und, um ehrlich zu sein, mir ist der Code zu cryptisch, als dass ich Lust hätte, mich da reinzuarbeiten...

PS: Welche Browser willst du denn unterstützen? CSS-Spiegelungen gehen bei älteren Browsern nämlich anders... wenn überhaupt.
 
ältere browser muß ich nicht unterstützen.
ich teste diese spiegelung und werde sie nehmen, wenn es keine probleme gibt. wußte gar nicht, daß CSS sowas leistet.
alternativ werd ich den "cryptocode" irgendwie umbauen.
daß er nicht auf einen blick zu durchschauen ist, hatte ich befürchtet.
 
Wenn du ältere Browser vernachlässigen kannst, warum machst du das dann überhaupt mit vielen <img>s und nicht mit einem <canvas>? Wäre wahrscheinlich um einiges einfacher und übersichtlicher. Hätte auch noch den Vorteil, dass man die erzeugten Bilder als PNG lokal abspeichern kann.
 
Zurück
Oben