compinfo
31.08.10 - 11:04:32 Uhr
|
Hi,
Hab ein kleines JS Problem. Zuerst mal zu den Datein:
scripts.js:
// window onload code...
-
- // initialize onclick-event for all span-tags with plaintext-function
- if(document.getElementsByTagName("span")) {
- var span = document.getElementsByTagName("span");
- var id = 0;
- for(var i=0; i<span.length; i++) {
- if(span[i].className == "plain") {
- span[i].onclick = function() { plaintext(this, id); };
- id++;
- }
- else
- continue;
- }
- }
// function
-
- // switch input type from password to text and other way round
- function plaintext(ele,id) {
- var form = ele.parentNode;
- var input = form.getElementsByTagName("input");
-
- if(input[id].type == "password") {
- input[id].type = "text";
- ele.innerHTML = "verstecken";
- }
- else if(input[id].type == "text") {
- input[id].type = "password";
- ele.innerHTML = "klartext";
- }
- }
html:
<? <form method="post" action="settings.php">
- <div style="width:100px; float:left"><label for="pwold">Altes Passwort:</label></div><input type="password" id="pwold" name="pwold"> <span class="plain">klartext</span><br><br>
- <div style="width:100px; float:left"><label for="pwnew">Neues Passwort:</label></div><input type="password" id="pwnew" name="pwnew"> <span class="plain">klartext</span><br><br>
- <div style="width:100px; float:left"><label for="pwcon">Bestätigen:</label></div><input type="password" id="pwcon" name="pwcon"> <span class="plain">klartext</span>
- <input type="submit" value="ändern" style="float:right">
- </form>
- ?>
Zum Problem: der onload-aufruf will nicht so, wie er sollte - es wird nämlich bei allen 3 elementen die id 3 als parameter übergeben; statt 0-2.
Noch etwas wichtiges... es muss in allen Browsern laufen allso kann man kein .getElementsByClassName oder .getElementByName verwenden...
Die onclick-events müssen zwingend per onload aufgerufen werden.
Seht ihr den Fehler? Ich verzeifle schon fast... 
EDIT:
Noch zu erwähnen: Beide Funktionen werden geladen, die Funktion plaintext geht 100% habs getestet als ich beim parameter plaintext(ele,id++) schrieb. Das erhöht dann aber bei jedem onclick-event die variable id um 1... 
Gruss
|