Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Wert erhöhen & erniedrigen und Array über Index auslesen - Javascript

B

Barry007

Guest

Hallo,
ich möchte über Buttons + & - in einem Array hoch und runter gehen und jedesmal den Inhalt ausgeben - angefangen aber bei Index[12]. Nun hab ich aber keine Ahnung wie ich das am sinnvollsten bewerkstelligen soll.
Könnt Ihr mir vielleicht helfen?

Bisher habe ich mich nur an einer Funktion minus() versucht, aber schon das funktioniert nicht.
Und wie bekomme ich dann + & - hin immer ausgehend vom neuen Wert in dem Ausgabefeld?

Ich habe hier mal das gepostet was ich bisher habe, bin langsam am verzweifeln.

Danke schon mal im Vorraus für eure Hilfe!


HTML:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
<script>
var a = new Array();
a[1] = "-2";
a[2] = "-1.75";
a[3] = "-1.5";
a[4] = "-1.25";
a[5] = "-1";
a[6] = "-0.75";
a[7] = "-0.5";
a[8] = "-0.2";
a[9] = "0.2";
a[10] = "0.5";
a[11] = "0.75";
a[12] = "1";
a[13] = "1.25";
a[14] = "1.5";
a[15] = "1.75";
a[16] = "2";

// Startwert steht von Anfang an in dem Feld #ausgabe
var i = 12;

// Wert erniedrigen und Ausgabe in das Feld
function a_minus(i) {
    i = i - 1;
    return (i);
}

function ausgabe(i) {
    document.write(a[i]);
}
</script>
</head>

<body>
<button onclick="a_minus()"> < </button>
<div id="ausgabe">
<script>
ausgabe();
</script>
</div>
<button onclick="a_plus()"> > </button>
</body>
</html>
 

cebito

undefined

Erstens, ein Array beginnt mit dem Index "0" ;) und die function "a_minus" erwartet auch einen Parameter beim Aufruf, nämlich den augenblicklichen Wert von "i". Bei onclick des Button übergibst du aber nix.
 
L

Lou Ping

Guest

Zweitens spricht man in dem fall wohl eher von mindern oder herabsetzen....:D
sorry ,konnte nicht widerstehen.:liebe:
 

lachender_engel

Aktives Mitglied

Noch ein dritter Hinweis: Die Funktion "ausgabe();" wünscht sich als Paramter den Wert, der ausgegeben werden soll. Du Rufst die Funktion gerade ohne Wert auf weshalb in der Funktion die Variable i = nichts ist und somit auch der Inhalt aus dem Array a[nichts] ausgegeben wird.
 

Chickenshooter

Alter Mann

Hallo

mein vorschlag...
das ist aber nicht php sondern js... sieht halt besser aus in bunt ... ;-)

PHP:
var a = new Array();
a[0] = "-2.25";
a[1] = "-2";
a[2] = "-1.75";
a[3] = "-1.5";
a[4] = "-1.25";
a[5] = "-1";
a[6] = "-0.75";
a[7] = "-0.5";
a[8] = "-0.2";
a[9] = "0.2";
a[10] = "0.5";
a[11] = "0.75";
a[12] = "1";
a[13] = "1.25";
a[14] = "1.5";
a[15] = "1.75";
a[16] = "2";

var i = 12;

function plusMinus(val) {
  i += val;
  if( i > a.length | i < 0 ){
     i=12;
  }
  if( i >= 0 & i < a.length ){
     document.all.meineAusgabe.innerHTML = a[i];
  }
}

HTML:
<body onload="plusMinus(0)">
  <p><button class="minus" onclick="plusMinus(-1)"> &lt; </button></p>
  <div id="meineAusgabe">###</div>
  <p><button class="plus" onclick="plusMinus(1)"> &gt; </button></p>
</body>

geht aber auch ohne array

PHP:
var min = -2;
var max = 2;
var step = 0.25;
var cur = 1;

function plusMinus(val) {
  if(val<0) { cur -= step}
  if(val>0) { cur += step}
  if( cur < min | cur > max){
     cur = 1;
  }
  document.all.meineAusgabe.innerHTML = cur;
}

mfg
 
Zuletzt bearbeitet:
B

Barry007

Guest

Vielen Dank!!! Es funktioniert soweit.
Habe aber etwas gebraucht um nachvollziehen zu können was hier passiert.

Nur möchte ich, dass das Array nur bis Index[0] geht und nicht weiter, ebenso nach oben bis Index[16] und nicht weiter bzw. nicht wieder bei Index[12] anfangen.

Das was ich jetzt gemacht habe funktioniert zwar aber ich bin mir nicht sicher ob das die beste Lösung ist, da hier ja jedes Mal nach einem Klick auf dem Button + oder - 1 hinzugezählt wird damit es am Anfang oder Ende des Array nicht weiter geht.

Meine Frage jetzt, gibt es noch eine elegantere Lösung dafür?

PHP:
var i = 12;
 
function plusMinus(val) {
    i += val;
    if ( i < 0 )    {
        i = i + 1;
    }
    if ( i > 16 ) {
        i = i - 1;
    }
   
          if( i >= 0 & i < a.length ){
         document.all.meineAusgabe.innerHTML = a[i];
          }
    }
 

Chickenshooter

Alter Mann

Hallo

damit der "Zähler" nicht unter 0 oder über 16 läuft....

reicht das folgende...
PHP:
function plusMinus(val) {
  i += val;
  if( i > a.length ){ i=a.length; }
  if( i < 0 ){ i=0; }

  if( i >= 0 & i < a.length ){
    document.all.meineAusgabe.innerHTML = a[i];
  }
}
mfg
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.613
Beiträge
1.538.346
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben