Script für Content-Management gesucht!
thomas
- javascript
Hallo! Da ich in Javascript eher eine Niete bin bzw. mich noch nicht viel damit beschäftigt habe: ich suche folgendes: in ein Textfeld wird eine Zahl eingegeben, z.B. 2. Nach Klick auf einen Submit-Button erscheinem darunter 2 neue Textfelder. Bei der Zahl 4 wären es 4 Textfelder usw... Habs schon selber versucht aber ich weiß nicht mal ob der Ansatz stimmt!
<script>
function doit() {
var zahl=document.formular.textfeld.value;
for(var i=0; i<zahl; i++)
var ausgabe=("<input type="text" name="var i"><br>");
document.write(ausgabe);
</script>
<form name="formular" action="blabla.htm">
<input type="text" name="textfeld"><input type="submit" onclick="doit();">
//Hier sollen die neuen Textfelder erscheinen, ohne Reload der Seite!
</form>
Für Hilfe wäre ich sehr dankbar!
thomas.
Da fehlt noch was: "}"
<script>
function doit() {
var zahl=document.formular.textfeld.value;
for(var i=0; i<zahl; i++)
var ausgabe=("<input type="text" name="var i"><br>");
document.write(ausgabe);
}
</script>
Würde ich mit PHP und einer Text-Datei b.z.w. SQL Datenbank programmieren...
Hilft Dir vielleicht nicht direkt weiter, ist aber echt komportabler ;-)
(Vorausgesetzt, dein Server "kann" php)
Gruss,
Andreas
Ich finds halt mit JS komfortabler! Mit PHP müsste ich die Seite erst reloaden mit einem Get-Parameter der mir dann eine bestimmte Anzahl von neuen Textfeldern ausgibt...
Hallo! Da ich in Javascript eher eine Niete bin bzw. mich noch nicht viel damit beschäftigt habe: ich suche folgendes: in ein Textfeld wird eine Zahl eingegeben, z.B. 2. Nach Klick auf einen Submit-Button erscheinem darunter 2 neue Textfelder. Bei der Zahl 4 wären es 4 Textfelder usw... Habs schon selber versucht aber ich weiß nicht mal ob der Ansatz stimmt!
Nein, er stimmt nicht.
<script>
function doit() {
var zahl=document.formular.textfeld.value;
for(var i=0; i<zahl; i++)
var ausgabe=("<input type="text" name="var i"><br>");
document.write(ausgabe);
Damit überschreibst du das Dokument.
Du willst neue Elemente in dein Dokument einfügen, dazu musst du neue Knoeten in das Dokument einfügen:
http://selfhtml.teamone.de/javascript/objekte/node.htm
Struppi.
Hab ichs mir doch gedacht dass der Ansatz nicht stimmt ;)
Aber da ich nunmal keine Leuchte in JS bin, wäre ein bisschen Code sehr hilfreich...
thomas.
Hab ichs mir doch gedacht dass der Ansatz nicht stimmt ;)
Aber da ich nunmal keine Leuchte in JS bin, wäre ein bisschen Code sehr hilfreich...
Ist das Kapitel in selfhtml zu unklar?
Ich hab noch nie mit nodes gearbeitet, da dies erst in neueren Browsern funktioniert und doch eine grosse Manipulation am Dokument darstellt, die normalerweise nicht dem Anwender zumuten wollte (das liegt daran, dass ich auch mit alten Rechnern/Browsern arbeite und immer wieder der Rechner in die Knie geht, wegen solchen Sachen).
Struppi.
Du kannst es wie folgt lösen.
*****************************
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script language="JavaScript" type="text/JavaScript">
counter = 1;
function addTags() {
for(i=0;i<document.formular.textfeld.value;i++){
formtags = '</div><div id="'+(counter+1)+'text"><input type="text"><br></div>';
document.getElementById((counter+"text")).innerHTML += formtags;
counter++;
}
}
</script>
</HEAD>
<BODY>
<form name="formular">
<input name="textfeld"><input type="button" value="hinzufügen" onclick="addTags();">
//Hier sollen die neuen Textfelder erscheinen, ohne Reload der Seite!
<div id="1text"></div>
</form>
</BODY>
</HTML>
*********************************
hatte einen kleinen fehler drinne.
hier nochmal der korrigierte code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script language="JavaScript" type="text/JavaScript">
counter = 1;
function addTags() {
for(i=0;i<document.formular.textfeld.value;i++){
formtags = '</div><div id="'+(counter+1)+'text"><input type="text"><br>';
document.getElementById((counter+"text")).innerHTML += formtags;
counter++;
}
}
</script>
</HEAD>
<BODY>
<form name="formular">
<input name="textfeld"><input type="button" value="hinzufügen" onclick="addTags();">
//Hier sollen die neuen Textfelder erscheinen, ohne Reload der Seite!
<div id="1text"></div>
</form>
</BODY>
</HTML>
hatte einen kleinen fehler drinne.
und noch einer:
counter = 1;
function addTags() {for(i=0;i<document.formular.textfeld.value;i++){
formtags = '</div><div id="'+(counter+1)+'text"><input type="text"><br>';
document.getElementById((counter+"text")).innerHTML += formtags;
counter++;
id's dürfen nicht mit einer Zahl anfangen, das DIV ist aber auch nicht nötig hier.
Struppi.
hatte einen kleinen fehler drinne.
und noch einer:
counter = 1;
function addTags() {for(i=0;i<document.formular.textfeld.value;i++){
formtags = '</div><div id="'+(counter+1)+'text"><input type="text"><br>';
document.getElementById((counter+"text")).innerHTML += formtags;
counter++;id's dürfen nicht mit einer Zahl anfangen, das DIV ist aber auch nicht nötig hier.
Struppi.
ok, dann kommt die zahl halt hinter ("text"+counter).
und wieso ist das divtag nicht nötig ??
ok, dann kommt die zahl halt hinter ("text"+counter).
Das geht.
und wieso ist das divtag nicht nötig ??
Wieso ist es nötig?
Wenn es um einen Zeilenumbruch geht reicht ein <br> hintendran.
Struppi.
ok, dann kommt die zahl halt hinter ("text"+counter).
Das geht.
Na dann bin ich aber beruhigt *gg*
und wieso ist das divtag nicht nötig ??
Wieso ist es nötig?
Wenn es um einen Zeilenumbruch geht reicht ein <br> hintendran.
Aber darum geht es doch beim div-tag garnicht.
schau dir am besten nochmal an was mit dem divtag geschieht, vielleicht aber habe ich dich auch einfach missverstanden.
Aber im moment verstehe deine aussage nicht *Gg*
mfg urmel
....
ich setzte das mal hier fort, weil du recht hast ich hatte gar nicht geguckt was du da genau machst.
Das ist keine saubere Lösung.
<script language="JavaScript" type="text/JavaScript">
counter = 1;
function addTags() {for(i=0;i<document.formular.textfeld.value;i++){
formtags = '</div><div id="'+(counter+1)+'text"><input type="text"><br>';
document.getElementById((counter+"text")).innerHTML += formtags;
counter++;
}
}
Besser so:
function addTags(anzahl) {
if(!document.getElementById) return;
var text = "";
for(var i = 0; i < anzahl; i++)
text += '<input type="text" name="..."><br>';
var obj = document.getElementById('text');
if(!obj) return;
obj.innerHTML += text;
}
<input type="text" name="anzahl">
<input type="button" value="hinzufügen" onclick="addTags(this.form.anzahl.value);">
//Hier sollen die neuen Textfelder erscheinen, ohne Reload der Seite!
<div id="text"></div>
</form>
Struppi.
stimmt deine function ist sauberer.
aber beide funktionieren und darauf kommt es an *gg*
Hi,
Hallo! Da ich in Javascript eher eine Niete bin bzw. mich noch nicht viel damit beschäftigt habe: ich suche folgendes: in ein Textfeld wird eine Zahl eingegeben, z.B. 2. Nach Klick auf einen Submit-Button erscheinem darunter 2 neue Textfelder.
lies dich in die DOM Methoden ein. Zufaellig habe ich da was rumliegen, das kannst Du als Anhalt nutzen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Input dynamisch</title>
<script language="javascript1.2" type="text/javascript">
var inpNam = "inp";
var cnt = 0;
function goForIt() {
cnt ++;
var inp = document.createElement("input");
inp.style.width = "100px";
inp.setAttribute("type","text");
inp.setAttribute("name",inpNam + cnt);
br = document.createElement("br");
document.getElementById("dynform").appendChild(inp);
document.getElementById("dynform").appendChild(br);
}
</script>
</head>
<body>
<form Name="feld" id="dynform">
<input type="button" value="goForIt" onclick="goForIt()"><br><br>
</form>
</body>
</html>
Gruesse Joachim
Da Deine Frage _nichts_ mit Content Management zu tun hat, wäre ein Titel wie "Elemente in Dokument einfügen" sicherlich besser geeignet gewesen...