Variable? am werk :p

Subwoover

Erfahrenes Mitglied
Hey hab da mal ein prob...
würd mein smileyscript gern dynamisch machen, so dass ich mit funktionsaufruf auch angebe, welches form feld ich gerne anspreche und welches form

so sieht meine funktion aus:
Code:
function setsmile(icon){
	document.form.preise.value = document.form.preise.value + icon;
	document.form.preise.focus();
}

würde gerne "form" und "preise" dynamisch einbaun, wie mach ich das? bin gaaaaanz neu in der JS szene :p
 
Wie wär's damit? :

function setsmile(ename, icon){
var elem = document.getElementsByName(ename);
elem.value = elem.value+icon;
elem.focus();
}
 
Zuletzt bearbeitet:
Ich hab's grad mal getestet.
Da sonst Fehler kommen, muss man das offenbar so schreiben:

function setsmile(ename, icon){
var elem = document.getElementsByName(ename)[0];
elem.value = elem.value+icon;
elem.focus();
}

oder die Dimension mit übergeben:

function setsmile(ename, dim, icon){
var elem = document.getElementsByName(ename)[dim];
elem.value = elem.value+icon;
elem.focus();
}
 
und welche werte hat die dimension? bzw was steht in dem array?
ich hab da so um die 40 felder und würd die funktion gern bei 4-5 von denan andwenden, also einfach immer dimension = 0?

EDIT: funktioniert genauso wie ichs will, ! aber was bringt nun die dimension?

EDIT2: Hab noch eine frage, wie kann ich mit diesem funktionsaufruf auch zeilenumbrüche in einer textarea bewirken?
 
Zuletzt bearbeitet:
Was die Dimension bringt?
Probier's mal ohne. Bei mir hat's nicht geklappt!
Wenn's doch ohne klappen sollte, kannst du die natürlich auch weg lassen. Aber, wie gesagt, bei mir funktioniert es nicht ohne. - ?!
Ohne diese Dimension kam bei mir die Meldung "das Objekt unterstützt diese Eigenschaft oder Methode nicht!"
Deswegen hab' ich die hinten drann gehängt, und siehe da, es klappt.
Wenn du die Felder in deiner Form alle mit einem unterschiedlichem Namen versehen hast, sollte es ausreichen immer 'ne 0 hinten drann zu hängen.

Den Zeilenumbruch in TextAreas kriegst du folgendermaßen hin:

häng dort, wo der Umbruch statt finden soll einfach folgendes an:

"\n"

also z. B.:

"smilies\n"
oder
"\nsmilies\n"
oder
"smiley_1\nsmiley_2"

Mit anderen Worten: du kannst das "\n" überall hin setzten. Auch mitten in den Text.

P.S.:
Das gleiche geht auch mit Tabulatoren u. ä. (z. B. "\t").
Vielleicht mal bei SelfHTML reinschauen.
 
Hallo,

zur Dimension: getElementsByName() liefert ein Array mit allen Elementen zurück, welche den gesuchten Namen haben. Wenn du jetzt z.B. 10 Felder mit dem Namen "eMail" hättest, könntest du die einzelnen Elemente mit dem Index (0-9) ansprechen. Wenn alle Namen bei dir auf der Seite einzigartig sind, dann liefert getElementsByName() nur "1-elementige-Arrays" zurück - aber trotzdem als Array - und auf Arrays kannst du nur mit Indiezes zugreifen, daher [0] für das erste (und evtl einzige) Element. Wenn du den Feldern eine ID zuordnest (welche im Dokument einzigartig sein muss) und die Felder dann mit getElementById() ansprichst kannst du dir die Dimension sparen....

ciao Andreas
 
nun vielen dank für die information :)
Wieda was gelernt :p

emmm ja wenn das mit \n funktionieren würd, hätt ich gar nicht gefragt! Das weiß ich ja dass das normalerweise mit \n hinhaut, aber in meinem fall irgendwie nicht :(

Er ersetzt das \n durch "", also aus dem gedachten zeilenumbruch wird einfach nichts.
help pls, probiert mal, vielleicht mach ich ja was falsch:
Code:
[<a href=\"javascript:setsmile('preise','Montag: \n Dienstag:\nblabla\n')\">Vorlage</a>]

EDIT: wenn ichs direkt ins script einbau dann funktionierts! also so:
Code:
function setsmile(ename, icon){
var elem = document.getElementsByName(ename)[0];
elem.value = elem.value+icon + "\n";
elem.focus();
}

hmpf, wills aber schon mit den argumenten mitgeben...

EDIT: ICH HABS! sorry... war eh klar.... wenn ich das ganze mit php ausgebe dass das erste backslash entwertet wird :p
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück