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

Slice-Parameter mit Variablen statt festen Werten übergeben

psteimann

New member
Hallo zusammen,

Versuche grad, einen variablenwert der slice-funktion zuzuordnen.

Ziel ist es, über eine Funktion die Länge der variablen um 1 Stelle zu kürzen. Das würde auch klappen nach folgendem Muster (var laenge)

Nur wei kann ich slice dazu bewegen, eine Variable statt einen festen Wert zu akzeptieren? ich behelfe mich grad mit "Spaghetti-Code" bzw. If-konstrukte, will ich aber keinesfalls so lassen.

Soll in etwa so aussehen:

displayinput = displayinput.slice(0, displayinput.lenght-1)
oder wenigstens

HTML:
displayinput = displayinput.slice(0,laenge)

//---------------------------------------
var laenge = (displayinput.length-1);
alert(displayinput);
alert(laenge);

if (Laenge=1)
	{
	displayinput= displayinput.slice(0,1)
	setContent("id", "EingabeD2", null,displayinput);
......


Gruss und Danke

Peter
 
Zuletzt bearbeitet von einem Moderator:
Ziel ist es, über eine Funktion die Länge der variablen um 1 Stelle zu kürzen.
displayinput = displayinput.slice(0, displayinput.lenght-1)
dein array mit der länge displayinput.lenght geht von 0 bis displayinput.lenght-1
also ist displayinput = displayinput.slice(0, displayinput.lenght-1) das ganze array

oder wenigstens
displayinput = displayinput.slice(0,laenge)
hier das gleiche, willst du m elemente in einem array geht die indexierung von 0-n mit n=m-1

EDIT: das stimmt übrigens alles nicht, slice extrahiert ohne end, displayinput = displayinput.slice(0, displayinput.lenght-1) liefert damit doch das array nur ohne das letzte element
 
Zuletzt bearbeitet:
Isst eigentlich ja auch richtig so. Den ersten parameter (0) kann ich ja nicht Verwenden, da es um die letzte und nicht die erste Stelle des Wertes geht.

Laenge hat schon den Wert, den ich für die Slice-Funktion als 2ten parameter brauch.

Grundsätzlich will ich einfach bei jedem Wert die letzte Stelle abschneiden, egal wie gross der Wert ist..deshalb muss der 2te Parameter eine Variable sein und nicht ein Wert, da ich ja wissen muss, wie gross der wert überhaupt ist..kann ja 1000 oder 10000000 sein:)

Oder mach ich da noch einen Denkfehler?

Gruss

Peter
 
Grundsätzlich will ich einfach bei jedem Wert die letzte Stelle abschneiden
ja

egal wie gross der Wert ist..deshalb muss der 2te Parameter eine Variable sein und nicht ein Wert
ja, das geht ja auch, warum auch nicht?

Oder mach ich da noch einen Denkfehler?
nicht unter dieser vorraussetzung:
Laenge hat schon den Wert, den ich für die Slice-Funktion als 2ten parameter brauch.
dann sollte alles ok sein
 
undefined ist keine fehlermeldung eines syntaxfehlers.
liefert slice undefined zurück? mach doch mal ein beispiel
Code:
<html>
  <head>
    <title></title>
    <script>
      var arr = [0,1,2,3,4,5,6,7,8,9];
      alert(arr);
      var arr = arr.slice(0, arr.length-1);
      alert(arr);
    </script>
  </head>
  <body>
    
  </body>
</html>
 
Zuletzt bearbeitet:
Ok. habs mal etwas abgeändert.
HTML:
<html>
  <head>
    <title></title>
    <script>
      var i = ('0123456789');
      alert(i);
      i = i.slice(0, i.length-1);
      alert(i);
    </script>
  </head>
  <body>
    
  </body>
</html>

Das geht.

Aber:


HTML:
<html>
  <head>
    <title></title>
    <script>
      var i = (0123456789);
      alert(i);
      i = i.slice(0, i.length-1);
      alert(i);
    </script>
  </head>
  <body>
    
  </body>
</html>

geht nicht. das 2te alert wird gar nicht mehr angezeigt.es erscheint auch kein fehler

Problem an der Sache: ich lese i aus einem Feld aus. i gibt mir dann im alert bei beiden codeschnippseln dasselbe aus, wenigstens visuell...tatsächlich ist es so, dass i dann nicht den Wet '1234', sondern 1234 hat. darum funktionierts auch nicht, wie obiges Beispiel beweist. Heisst imho, dass lenght nur funktioniert, wenn es explicit als string erkannt wird. Wie lös ich das nun am elegantesten??

- - - Aktualisiert - - -

Habs jetzt mal so versucht:

HTML:
var i = String(displayinput);
var k = (i.lenght);
alert(k);
i hat dann den Wert 1234 und sollte ja dann ein String sein

Jetzt kommt aber undefinied...

- - - Aktualisiert - - -

Was dann aber widerum geht:

HTML:
var Laenge = (displayinput.length-1);

if (Laenge==1)
	{
	displayinput= displayinput.slice(0,1)
	
	}
if (Laenge==2)
	{
	displayinput= displayinput.slice(0,2)
	}

Also ich verstehs nicht....
 
Zuletzt bearbeitet von einem Moderator:
Also jetzt wirds aber langsam ganz komisch:

Dein obiger Code gibt beim 1.Alert NaN zurück. beim 2. dann Na.

Die übergebene Zahl war 666...

Noch ne idee??
 
Ich sag doch nicht, dass Dein Beispiel nicht funktioniert! Nur muss es ja bei meinem beispiel auch funktionieren, da iss nix mit hardcodierung.

Das einzige was ich anders mache: ich lese die Zahlen aus einer Variablen aus, welche aus einer Eingabe eines Feldes stammen, statt die Werte hardcodiert einzugeben. Ich überprüfe den Wert der Variablen mit Alert, genauso wie Du es tust. Und jeztz müsste halt einfach die zuetzt eingegebene Ziffer wieder aus der Variablen gelöscht und neu in das Feld geschrieben werden. Einen Verdacht habe ich aber:ASC65 Wäre ein "A", also 66-1. Kann auch ein Zufall sein...

Vielelicht müst ich einfach nach was anderem als slice suchen. Hast Du noch ne Idee?

Gruss

Peter

- - - Aktualisiert - - -

fb.jpg

Noch so einer: Hier gibts nicht mal die Möglichkei, "ausnahmsweise" darauf zugreifen zu können..usser mit einem anderen Browser;.)
 
es erscheint auch kein fehler
Das kann nicht sein, da Zahlen keine Methode .slice() haben.

ahh, es geht um einen string
Hab' ich mir auch gedacht...
@psteimann: warum verwendest du nicht STRING.substring() oder STRING.substr() - dadurch erkennt man sofort, dass es um einen String geht. Auch ist der Wert, den man von .value bekommt immer ein String und muss nicht konvertiert werden.

ich lese die Zahlen aus einer Variablen aus, welche aus einer Eingabe eines Feldes stammen, statt die Werte hardcodiert einzugeben. Ich überprüfe den Wert der Variablen mit Alert, genauso wie Du es tust. Und jeztz müsste halt einfach die zuetzt eingegebene Ziffer wieder aus der Variablen gelöscht und neu in das Feld geschrieben werden.
Mir drängt sich jetzt die Frage auf: warum? Was willst du eigentlich erreichen?

Und wenn du es unbedingt machen willst:
Code:
<!DOCTYPE html>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Fenstertitel</title>
<style type="text/css"></style>
</head>
<body>
<input id="input">
<button id="doit">do it!</botton>
<script type="text/javascript">
document.getElementById("doit").onclick = function(){
	var input = document.getElementById("input")
	var value = input.value;
	value = value.substring(0, value.length - 1);
	alert(value);
	input.value = value
};
</script>
</body>
</html>


PS: Ich finde ja die Benutzung von String zur Stringkonvertierung besser als die die Benutzung als Konstruktor, aber durch die Großschreibung sieht das irgendwie falsch aus. Ich verwende da lieber .toString() (wenn die Variable definiert und nicht null ist - aber das sollte man sowieso immer separat behandeln).

- - - Aktualisiert - - -

Noch so einer: Hier gibts nicht mal die Möglichkei, "ausnahmsweise" darauf zugreifen zu können..usser mit einem anderen Browser;.)
...oder hast du an der Stammzertifikatsliste rumgespielt?
 
Zurück
Oben