theweber
Goto Top

Funktion mit Array (oder ähnliches) wiederholen, Einfaches füllen und ausgeben mehrer Felder

Hallo Zusammen,
habe von javaScript nicht so die Ahnung und darum brauche ich eure Hilfe.
Mein Ziel:
Mehrer eingabe Felder in HTML mit gleichzetiger Ausgabe und der möglichkeit zu löschen.

Ich habe es zu zeit so gelöst bzw. das ist mein Ansatz.

Code:
<html>

<script language="javascript">  
function addEntry() {
var oOption=document.createElement("OPTION");  
oOption.text=news2.value;
s2.add(oOption);
}
function removeEntry() {
if (s2.selectedIndex==-1) return false;
s2.remove(s2.selectedIndex);
}
</script>
<script language="javascript">  
function addEntry1() {
var oOption=document.createElement("OPTION");  
oOption.text=news3.value;
s3.add(oOption);
}
function removeEntry1() {
if (s3.selectedIndex==-1) return false;
s3.remove(s3.selectedIndex);
}
</script>

<Table border="1">  
	Server Spezifikationen
	<TR>
		<td>
		Servername
		</td>
		<td>
		<select id="s2" size="1">  
		</select><br>
		<input type="button" onclick="removeEntry()" value="löschen">  
		</td>
		<td>
		<input type="text" id="news2">  
		<input type="button" onclick="addEntry()" value="speichern">  
		</td>
	</tr>
	<TR>
		<td>
		Servername
		</td>
		<td>
		<select id="s3" size="1">  
		</select><br>
		<input type="button" onclick="removeEntry1()" value="löschen">  
		</td>
		<td>
		<input type="text" id="news3">  
		<input type="button" onclick="addEntry1()" value="speichern">  
		</td>
	</tr>
	
</table>
<br>
</html>
Nun muss es ja möglich sein die Funktion immer wieder zu benutzen ohne Sie 30 mal oben als funktion zu schreiben. ich denke das geht mit einen Array aber habe kein Plan wie.

Ich hoffe ich die Frage ist Verständlich.

Danke

Content-Key: 187693

Url: https://administrator.de/contentid/187693

Ausgedruckt am: 29.03.2024 um 07:03 Uhr

Mitglied: Arano
Arano 09.07.2012 um 17:47:17 Uhr
Goto Top
Hi

hm... besser wäre es gewesen wenn du einfach mal genauer erklärt hättest was du denn vorhast !

Aber die Lösung ist eigentlich gaaaanz einfach ;)
Übergebe der Funktion die IDs der HTML-Elemente.
  <script>
    function addEntry(targetId, sourceId)
    {
      var oOption=document.createElement("OPTION");  
      oOption.text=sourceId.value;
      targetId.add(oOption); 
    }
  </script>
  

  <input onclick="addEntry('s1','news1')">  
  ...
  <input onclick="addEntry('s2','news2')">  
  ...
  <input onclick="addEntry('s3','news3')">  



~Arano
Mitglied: Theweber
Theweber 10.07.2012 um 08:36:10 Uhr
Goto Top
morgen, erst mal vielen Dank für deine Antwort.
Gern erkläre ich dir den hintergrund.

Und zwar möchte ich ein HTML erstellen, wo ich felder vorgebe. der User gibt dann einfach nur noch die Daten ein.

Nun habe ich das Verstanden, allerdings fehlt mir noch die Ausgabe.

Mein Code sieht nun so aus:

<script language="javascript">
function addEntry(targetId, sourceId)
{
var oOption=document.createElement("OPTION");
oOption.text=sourceId.value;
targetId.add(oOption);
}
</script>
<input type="text">
<input type="button" onclick="addEntry('s1','news1')" value="speichern">

Wie kann ich den nun Links daneben den Text ausgeben?

Danke
Mitglied: Arano
Arano 10.07.2012 um 12:30:40 Uhr
Goto Top
Hi,

wo ist dein Element mit der ID "s1" ?
Hast du das <select> jetzt beim posten vergessen oder fehlt es vetsehendlich tatsächlich noch in deinem Quelltext ?

Dem <input type="text"> fehlt die ID="newsX"... ;)


~Arano
Mitglied: nxclass
nxclass 10.07.2012 um 12:53:05 Uhr
Goto Top
Mehrer eingabe Felder in HTML mit gleichzetiger Ausgabe und der möglichkeit zu löschen.
... hast Du auch bedacht, dass beim senden des Formulars nur die ausgewählten Elemente aus SELECT übertragen werden? - könnte eine Liste mit INPUT (text o. checkbox) Feldern nicht sinnvoller sein ?

Weiterhin würde ich nicht in jedes HTML Input Element den Javascript Code einbauen, sondern mit
.getElementsByTagName()
arbeiten und über die Element Liste iterieren um die onclick Events zu setzen.
Mitglied: Theweber
Theweber 11.07.2012 um 16:07:43 Uhr
Goto Top
Hallo,
also nocheinmal zur Verdeutlichung.
Es wird nur eine HTML Seite geben.
Dort aber halt so ca. 10 - 20 Einträge.
Aufbau soll wie folgt sein.
Beschreibung: Eingabefeld
Als Bsp.
Name: (Eingabefelde)->User gibt den Namen ein | Fertig das war´s. Nun soll der Name dort stehen.

Vieleicht Hilft das ein bisschen.
Stehe wegen den Code aber gerade auf den Schlauch, bekomme es nicht hin das das eingegeben dort auftaucht.
<html>
<script language="javascript">  
 function addEntry(targetId, sourceId) 
    {
     var oOption=document.createElement("OPTION");  
      oOption.text=sourceId.value; 
      targetId.add(oOption);
      }
</script>
<select id="s1" size="1">  
		</select><br>
<input type="text" id="('s1','news1')">   
<input type="button" onclick="addEntry('s1','news1')" value="speichern">   
</html>
Mitglied: Arano
Arano 11.07.2012 um 20:01:49 Uhr
Goto Top
Hoho junge...
stehst wohl mit beiden Füßen auf dem Schlauch, he !?
<input type="text" id="('s1','news1')"> *hihi*

Du hättest doch nur dein eigenes (altes) soweit anpassen müssen, das die IDs aus den Parametern gezogen werden...
<html>
  <head>
    <title>was auch immer...</title>
    <script type="text/javascript">  
      <!--

        function addEntry( targetId, sourceId )
        {
            var oSource = document.getElementById( sourceId );
            var oTarget = document.getElementById( targetId );
            if( null==oSource || null==oTarget )
            {
                alert( "Das Quell- oder Zielelement wurde nicht gefunden !" ); 
                return false;
            }
            var oOption = document.createElement( "OPTION" ); 
            oOption.text = oSource.value;
            oTarget.add( oOption );
            // leere eingabefeld ;)
            oSource.value = ""; 
            
            return true;
        }
        
        
        
        function removeEntry( selectId )
        {
            var oSelect = document.getElementById( selectId );
            if( oSelect.selectedIndex==-1 )
                return false; 
            oSelect.remove( oSelect.selectedIndex );
            
            return true 
        }

      -->
    </script>
  </head>
  <body>



<select id="s1" size="1"></select><br>  
<input type="text" id="news1">   
<input type="button" onclick="addEntry( 's1', 'news1' )" value="speichern"><br>  
<input type="button" onclick="removeEntry( 's1' )" value="l&ouml;schen">  

<br><br>

<select id="s2" size="1"></select><br>  
<input type="text" id="news2">   
<input type="button" onclick="addEntry( 's2', 'news2' )" value="speichern"><br>  
<input type="button" onclick="removeEntry( 's2' )" value="l&ouml;schen">  



  </body>
</html>

Du solltest noch eine Prüfung auf gefüllte Eingabefelder einbauen, sonst werden leere <option>s erzeugt ;)


~Arano
Mitglied: Theweber
Theweber 18.07.2012 um 12:16:18 Uhr
Goto Top
Vielen Dank euch allen, es funktioniert wunderbar.

Allerdings habe ich ein Problem. (habe ich mir schon gedacht)
Es ist ja nun so wenn ich die Seite wieder aufbaue sind alle eingaben weg. kann ich die Irgendwie Fest speichern?
Die Eingaben sollen ja für immer da stehen und nicht nur solange ich auf der Seite bin.
Mitglied: Arano
Arano 18.07.2012 um 20:25:21 Uhr
Goto Top
kann ich die Irgendwie Fest speichern?
o_O Und DAMIT kommst du erst jetzt !?
nicht das ich das nicht eh schon befürchtet hatte... *g*

Wie ich es bereits mit meiner ersten Antwort auf deine Fragestellung gefordert hatte: eine genaue Beschreibung ;)
irgendwie = mach nen Screenshot :P

Also dein Problem ist jetzt folgendes:
HTML (HyperText Markup Language) ist nur eine Auszeichnungssprache, also um besondere Abschnitte eines Textes gesondert hervorzuheben / zu formatieren: Überschriften <h[1-6]>, Schlagwörter <[b|i|k]>, Listen <li>, Links, Dropdown, ect.
Zur statischen Darstellung - mehr nicht !

Um die Daten nun "irgendwie" zu speichern benötigst du also eine weitere Sprache die dieses kann, z.B: PHP - kann __dein SERVER__ das !? Oder Perl oder ASP.net oder eine andere.
Wenn ja, kannst du eben mit dieser Sprache die Daten z.B. in einer einfachen Datei speichern oder gar in eine Datenbank ablegen (was hier aber wohl überdimensioniert wäre, wenn nicht schon vorhanden)
Wenn nicht, sieht es schlecht aus. Ein bisschen Hoffnung kann ich dir allerdings mit HTML5 auch hier noch geben HTML5 und Local Storage aber damit habe ich mich noch nicht beschäftigt. Und dieses setzt voraus, das deine Seite immer auf dem Rechner benutzt wird auf dem auch die Daten gespeichert sind. die genaue Beschreibung fehlt ja ;)

Und ohne zu wissen was für Möglichkeiten du (dein Server) hast, kann man dir schlecht helfen...


Schönen Gruß
~Arano