Ids dynamisch mit Schleife aufrufen, Java-Script

Hallo miteinander,
ich habe auf einer (lokalen) html-Seite 9 Eingabefelder, denen ich dynamisch mit java-script einen Wert zuweisen will.
Die EF stehen in einem Div und haben die Ids „Z0“ bis „Z8“.
Ich habe versucht , das mit einer for-Schleife zu realisieren, leider funktioniert das nicht. Hier die von mir getesteten Funktionen:
function anzeigen() {
for(i = 0; i <= 8; i++)
{
var zaehler = „Z“ + i ;
document.all.zaehler.value = „i“;
}

Auch mit concat () habe ich es versucht
function anzeigen2() {
for(i = 0; i <= 8; i++)
{
var zeichen = „Z“
var zaehler = zeichen.concat(i);
document.all.zaehler.value = „i“;
}

MIt alert wird die Variable zaehler ordendlich angezeigt, also Z0, Z1 usw. In der Zeile, mit der dem Eingabefeld der Wert zugewiesen werden soll (wegen der Einfachheit hier „i“) wird die Zeichenfolge zaehler offensichtlich nicht als Id erkannt. Was mache ich da falsch?
Silberfuchs

Das würde dir so auch nichts bringen. Wenn du den Input-Feldern Werte zuweisen willst, benötigst du eine Funktion zum Zuweisen und natürlich auch die dazugehörigen Werte. Außerdem bietet sich eine foreach-Schleife an, weil der Array-Index zum Hochzählen der IDs verwendet werden kann. Wenn du jetzt noch jQuery verwendest, reichen dafür 3 Zeilen Code.

HTML
[HTML]









[/HTML]

jQuery

$.each(['eins', 'zwei', 'drei', 'vier'], function(index, wert) { $('#z_' + index).prop('value', wert); });

Danke zunächst, ist die foreach-Schleife bei javascript möglich? Habe damit noch nie gearbeitet. CGI/Perl ist für mich Neuland, will auch wegen dieses einen Problems damit nicht anfangen(73):frowning:

Mit CGI und Pearl hat das nichts zu tun. jQuery ist ein JS-Framework, das den Umgang mit JavaScript vereinfacht. Wenn du es lieber mit vanilla JS machen willst, dann käme eine forin-Schleife in Betracht.

Hallo Tronjer
auch jQuery und vanilla js sind mir im Moment noch "böhmische Dörfer. Aber wenns nicht anders geht, muss ich mich wohl damit beschäftigen. Aber gehts nicht doch einfacher ??
Vielleicht hat jemand noch eine Idee, warum mein Ansatz nicht funktioniert!
Danke trozdem

Na, so kompliziert sollte das doch nicht sein. Probiers mal so:

function anzeigen() { for(i = 0; i <= 8; i++) { var id = "Z" + i ; document.getElementById(id).value = i; }

Hallo Sempervivum,
habs versucht, klappt leider auch nicht. Habe auch mal die var id durch x ersetzt, um mögliche Namenskonflikte auszuschließen, hat auch nicht geholfen.
Trotzdem Danke, würde mich freuen, wenn Du noch weitere Tipps hättest !:wink:
Silberfuchs

Poste doch mal den Code, den Du jetzt hast, einschl. HTML. Oder besser die URL deiner Seite.

Moin,
das Beispiel von Sempervivum geht

http://jsfiddle.net/m5FAU/

MfG

Nach dieser Aussage sollte klar sein dass es nicht am Script liegt, sondern daran wie es verwendet wird.

Hier ist der Code, ich habe den entscheidenden Teil herauskopiert: Unten steht dann noch die Datei extern.js

input.kfeld1 {position:relative; left:2mm; top:2mm; width:5mm; text-align:center; font-weight:bold;}

Hier die Startzahlen eingeben!



Test

js-Datei, drei Varianten:
function anzeigen1() {
document.all.Z0.style.backgroundColor =„#E0FF00“;
document.all.Z0.value=„5“;
document.all.Zelle1.style.backgroundColor =„#E0FF00“;
document.all.Zelle1.value=„8“;
}

function anzeigen2() {
for(i = 0; i <= 8; i++)
{
var zeichen = „Z“ + i;
var zaehler = String(zeichen);
alert(zaehler);
document.all.zaehler.value = „i“;
}
}

function anzeigen() {
for(i = 0; i <= 8; i++)
{
var x =„Z“ + i ;
document.getElementById(x).value = i;
}
}

Hallo, damit Ihr seht, wie hilfebedürftig ich bin, habe ich ein Avatar eingestellt. Im Übrigen habe ich die html-Datei mit „phase5“ erstellt, auf anderen Browsern sieht das vielleicht nicht so übersichtlich aus

Da deine IDs bei Z1 anfangen und bis Z9 gehen, muss es heißen:

function anzeigen() {
for(i = 1; i <= 9; i++)
{
var x ="Z" + i ;
document.getElementById(x).value = i;
}
}

Moin,
zu dem HTML sag ich mal nichts…
So gehts: http://jsfiddle.net/5vGLD/

MfG

Besten Dank! !!
Ich benutze in diesem Fall die html-Seite nur als Oberfläche, soll niemals hochgeladen werden!
MfG Silberfuchs