Fortlaufende Buchstaben - Zahlen - Kombination

mtc716

Grünschnabel
Hallo,

ich habe folgendes Problem und zwar:

Ich habe 3 Input-Felder:

Feld1: Startwert
Feld2: Anzahl
Feld3: Ergebnis

Der Startwert sieht zum Beispiel so aus: 2000A oder 2000Z
In das Feld Anzahl möchte ich eine beliebige Zahl eingeben.
Im Feld Ergebnis soll wie der Name schon sagt, dass Ergebnis erscheinen.
-----------------------------------------------------------------------
Beispiel 1:

Startwert: 2000A
Anzahl: 3
Ergebnis: 2000A-2000C

Das ist ja noch nicht allzu schwer.
-----------------------------------------------------------------------
Beispiel 2:

Startwert: 2000Y
Anzahl: 3
Ergebnis: 2000Y-2001A
-----------------------------------------------------------------------
Im Ergebnisfeld steht also der Startwert-Endwert, wobei der Endwert abhängig von der Anzahl ist. Es soll also diese Zahlen-Buchstabenkombination so oft erhöht werden, wie im Feld Anzahl steht, wobei zuerst die Buchstaben erhöht werden sollen und nach dem Buchstaben Z folgt eine Erhöhung der Zahl und die Buchstaben fangen wieder bei A an.

Wäre super wenn mir jemand nen Code-Schnipsel geben könnte.

MfG

MTC
 
Hi,

so sollte es gehen:
HTML:
function increase() {
	var fullval = document.getElementById("num").value;
	var numval = parseInt(fullval);
	var ascval = fullval.toUpperCase().charCodeAt(fullval.length - 1);
	ascval += parseInt(document.getElementById("steps").value);
	if (ascval > 90) {
		numval ++;
		ascval -= 26 * (Math.floor((ascval - 91) / 26) + 1);
	}
	ascval = String.fromCharCode(ascval);
	document.getElementById("res").value = numval + ascval.toString();
}
</script>
<body>
<input type="text" id="num">
<input type="text" id="steps">
<input name="button" type="button" id="button" value="&gt;&gt;" onClick="increase()">
<input type="text" id="res">
</body>

Gruß

.
 
Zuletzt bearbeitet:
Hallo,

vielen Dank erstmal.

Funktioniert ansich wunderbar, aber es kann auch sein, dass die Anzahl der Steps größer als 100 ist und dann funktioniert es nicht mehr. Also bei einer Anzahl größer als 26 geht es nicht mehr, denn die Zahl wird nicht nochmal erhöht.

d.h.

bei Startwert 1999Z und einer Anzahl von 27 müßte ein Endwert von 2001A rauskommen.
Es kommt aber bei deinem Script 2000A raus, da die Zahl nicht nochmal erhöht wird.

MfG

MTC
 
Zuletzt bearbeitet:
Hi,

1.) ich habe noch einen Fehler entdeckt (bei Werten, die mit 0 beginnen, wurde die Zahl als Hexwert interpretiert -> gefixed.

2.) der von Dir genannte Fehler tritt bei mir (nach der ersten Änderung des Scriptes) nicht mehr auf

3.) wie gewünscht habe ich die Anzeige des Bereichs eingebaut:
HTML:
function increase() {
    var fullval = document.getElementById("num").value;
    var numval = parseInt(fullval, 10);
    var ascval = fullval.toUpperCase().charCodeAt(fullval.length - 1);
    var inc = parseInt(document.getElementById("steps").value);
    var orig_n = numval;
    var orig_a = ascval;
    orig_a += 1;
    if (orig_a > 90) {
        orig_n ++;
        orig_a -= 26;
    }
    var one_ahead = orig_n + String.fromCharCode(orig_a);
    ascval += inc;
    if (ascval > 90) {
        numval += (Math.floor((ascval - 91) / 26) + 1);
        ascval -= 26 * (Math.floor((ascval - 91) / 26) + 1);
    }
    ascval = String.fromCharCode(ascval);
    if (parseInt(document.getElementById("steps").value) <= 1) {
         document.getElementById("res").value = numval + ascval.toString();
    } else {
        document.getElementById("res").value = one_ahead + " - " + numval + ascval.toString();
    }
}

Gruß

.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück