[javascript] variablen testen

07/08/2008 13:41 Mizu#1
Ich bräuchte eine Funktion die mir mehrere Variablen auf ihren typ testen :confused:
Also im Prinzip -> isUndefinied(x1,x2,...x15)

Problem an der ganzen Sache ist nur dass es immer unterschiedlich viele Variablen gibt die getestet werden müssen.
07/08/2008 14:12 verT!c4L#2
Hm, was willst damit machen ?
Ich versuchen dir zu helfen, aber sag bitte was du damit machen willst ^^
Wenn ich dich nicht falsch verstanden habe, willst du ein (mehrere) Javascript(s) nach Variablen untersuchen, und deren Eigenschaften checken ?!
wenn diese immer mit var deklariert sind, könnte man die variablen in ein Array pushen,
und das Array bzw die Variablen dann mit ner for-schleife abklopfen?!

Edit: Man kann im Prinzip ähnlich auch Objekte und Arrays "filtern".
07/08/2008 14:57 Mizu#3
also da gibts halt in der typo3 form unterschiedliche benutzergruppen und die dürfen halt auch unterschiedlich viel sehen.

die variablen sind aber nicht in nem array sondern lungern im typo3 script rum.

wenn das formular nun auf nem anderen typo3 server benutzt wird und is es damit möglich nicht für jede gruppe wieder alles umzuschreiben.

sry bin gerade auf der arbeit bissel busy.

vorallem kann ichs dir nur dürftig erklären da ich nicht am typo3 script sitze sondern die php programmierung mache.

me hates typo3
07/08/2008 15:08 verT!c4L#4
jA w!LLk0mm3n im Club der Arbeitenden ;)

Kannst mir davon mal ein ausschnitt zeigen? per pm oder icq...
07/08/2008 15:34 Mizu#5
Hab gerade ne bessere idee ->

Also ... ich hab z.b. 3 input tags die alle die id "test" haben, nun will ich per getElementById immer eine Id weiter gehen und sie in nem Array speichern.
bekomms aber nun noch nicht hin sie in einzeln abzuspeichern.

edit: alert(document.getElementById("test").value);

damit bekomme ich aber nur den ersten wert, wie bekomme ich den zweiten ?
getElementsByName kann ich ja so benutzen document.getElementsByName("fname")[x].value
nur dass ichs nicht über den namen lassen kann

edit2: ach alles scheisse ^^ habs nun mit "alert(document.getElementById("test").nextSibling .nextSibling.value);" soweit hinbekommen und dann wird mir gesagt "bla bla schwall schwall ..... ich brauch ne function"





ok so nun
07/08/2008 15:56 verT!c4L#6
Erstmal brauchst du ein Filter der dir die id tags ins Array pusht, oder nich ?!
Und dann kannst ja mit ner for-Schleife das Array durchgehen und nach jedem i++ (z.B.)
Das dann ausgeben...


var elem3nt='';
var test='';
var values = new Array();
*alle id's da rein stopfen*
values.push( '['+x+', '+y+']' );
alert('Array enthaelt : '+values.length+' Ids')
for(i=0; i<values.length; i++){
elem3nt = values[i];
document.getElementById(elem3nt.value);
test += ( values[i]+", "+"\r" );
}
alert(test);

naja quick 'n' dirty code, hoff es ist nachzuvollziehen :P

Edit: Habe dein Edit nun auch wahr genommen... hm, nextSibling, sagt mir grad mal nix ^^
Zeig mal dein fertigen Code wenn du es soweit hast.
Vlt kann mans irgendwann nochmal gebrauchen für das ein oder andere :D

Schön Feierabend und so!
07/08/2008 16:20 Mizu#7
Jau verstehe soweit, nur bekomme ich nicht alle inputs die mit der bestimmten id in nen array :(
07/08/2008 16:21 verT!c4L#8
Das dacht ich mir schon ^^
Darum schau dir das hier mal an: [Only registered and activated users can see links. Click Here To Register...]

Der hat nextSibling bzw previousSibling "überarbeitet".
Dadurch kannste "bequemer" die Elemente durchgehen. Zumindest klang das für mich grad so beim drüberfliegen.

Edit:

Wie sieht denn dein Input aus?
Das muss gehen. Verdammt, da will man Feierabend machen, und es fängt an zu schütten aus allen Bächen. -.-
07/08/2008 16:44 Mizu#9
also ich schau mir die site nochmal kurz an und druck mir dann noch meine 6 A1 Poster für die Wohnung aus, freu mich schon richtig. Wenn die erstmal an der Wand hängen werde ich mich diesem Problem wieder zuwenden ...
Shit c4d scheisse muss ich ja auch noch fertig machen ;//// geez

[Only registered and activated users can see links. Click Here To Register...]
07/08/2008 18:10 verT!c4L#10
ALTER! Kannst mir die mal zukommen lassen ? :P
07/09/2008 13:42 Mizu#11
re: deviantart.com ;)
07/09/2008 15:01 Mizu#12
Nochmal zurück zum Thema:
Ich brauche einfach ne Funktion die auf ungewiss viele Parameter reagieren kann.

Also am einfachsten wäre es wenn erst alle Id´s mit dem namen "test" per .nextSibling in ein Array gespeichert werden (was bei mir schon nicht funzt) und naja der rest sollte einfach sein.

doppelpost sry
07/10/2008 10:26 verT!c4L#13
Deine Beschreibung verwirrt mich o.O

Du brauchst ne SuFu die alle Id's in ein Array packt-> ok
Aber die haben doch alle verschiedene namen, und nich nur test ?! :P

Edit:

Kannste hiermit was anfangen ? :

PHP Code:
function returnAttributes(at){
    var 
arr=[];
    var 
elem=document.getElementsByTagName('*'), i=0e;
    while(
e=elem[i++]){
        
e[at]?arr[arr.length]=e[at]:null;
    }
    return 
arr;
}
onload=function(){
    var 
allIds=returnAttributes('id');
    
alert(allIds);

ByTagName kann man eine Wildcard zuweisen, dadurch bekommt man alle Elemente :P

kannst es auch direkt hiermit im Browser testen:

Quote:
javascript: function returnAttributes(at){var arr=[];var elem=document.getElementsByTagName('*'), i=0, e;while(e=elem[i++]){e[at]?arr[arr.length]=e[at]:null;}return arr;}var allIds=returnAttributes('id');alert(allIds);
Der Rest sollte dann klar sein oder ?!
Wenn nicht sag bescheid, und poste dann mal das gesamte Script, würd mich mal intressieren.
07/15/2008 13:45 Mizu#14
PHP Code:
<br>
<
br>
<
form onsubmit="">
<
input type="hidden" id="egal">
<
input type="text" name="fname" value="Baarfoo" id="lala" />
<
input type="text" name="fname" value="foobar" id="3" />
<
input type="text" name="pw" value="Bao00" id="lala" />
<
input type="text" name="email" value="[Only registered and activated users can see links. Click Here To Register...]id="lala" />
<
input type="text" name="fname" value="Baasdfrfoo" id="lala" />
<
input type="button" value="click me" onclick="ValidateForm('lala')" id="egal">
</
form>

<
script language="JavaScript" type="text/javascript">
//vars _____
    
var str = new Object();
    var 
idArray = new Array();
    var 
idGive "";
    var 
0;
//vars-----
    
function ValidateForm(idGive){
            
str document.getElementById(idGive);
            while(
str == '[object]'){
            if(
str.id == idGive){
                                                    
idArray[x] = str.value;
                                                    
x++;        
                                                    if(
str.name == "pw"){
                                                        
alert("password, id = idGiven");
                                                        
checkPassword(str.value);
                                                    
                                                            }
                                                            if(
str.name == "email"){
                                                                
checkForEmail(str.value);
                                                                
alert("email. id = idGiven");
                                                                }
                                                    }        
            
str str.nextSibling.nextSibling;
                                                            }
            
alert("ID Array (Values)= "+idArray);
            
alert("anzahl der werte im array = "+idArray.length);
            
alert("gewählte id = "+idGive);
                                                            }
                                                            

function 
checkPassword(pwTest){
    var 
regex = /d/g;
    if(
pwTest.length <= ){/*alert("kleiner/gleich 5 "+pwTest.length)*/}else{/*alert("größer 5 "+pwTest.length)*/}
    if(
regex.test(pwTest) ){/*alert("zahl in pw")*/}else{/*alert("keine zahl im pw");*/}
}
function 
checkForEmail(eMailTest){
    if (
eMailTest.indexOf(".") > && eMailTest.indexOf("@") > 0) {alert("email richtig");}else{alert("email falsch")}
}

</script> 
habs drastisch vereinfacht, aber angeblich reichts so :p
07/15/2008 14:17 verT!c4L#15
Nach Tagen meldet er sich auch mal wieder :P
Veränder mal bitte die Einrückung, die is grausam...
Nunja, ich habs beinah vermutet das es sich um so etwas handelt, wobei man
Verifizierungen nicht auf client-seite machen söllte...

*Dabei hab ich mir so viel Mühe gegeben dir zu helfen* :D