anzeige

Javascript: id bei funktionsaufruf übergeben


Seite: 1
Autor Beitrag
compinfo
31.08.10 - 11:04:32 Uhr

Hi,

Hab ein kleines JS Problem. Zuerst mal zu den Datein:

scripts.js:

  1. // window onload code...  
  2.  
  3.     // initialize onclick-event for all span-tags with plaintext-function  
  4.     if(document.getElementsByTagName("span")) {  
  5.         var span = document.getElementsByTagName("span");  
  6.         var id = 0;  
  7.         for(var i=0; i<span.length; i++) {  
  8.             if(span[i].className == "plain") {  
  9.                 span[i].onclick = function() { plaintext(this, id); };  
  10.                 id++;  
  11.             }  
  12.             else  
  13.                 continue;  
  14.         }  
  15.     }  

  1. // function  
  2.  
  3. // switch input type from password to text and other way round  
  4. function plaintext(ele,id) {  
  5.     var form = ele.parentNode;  
  6.     var input = form.getElementsByTagName("input");  
  7.       
  8.     if(input[id].type == "password") {  
  9.         input[id].type = "text";  
  10.         ele.innerHTML = "verstecken";  
  11.     }  
  12.     else if(input[id].type == "text") {  
  13.         input[id].type = "password";  
  14.         ele.innerHTML = "klartext";  
  15.     }  
  16. }  


html:

  1. <?        <form method="post" action="settings.php">      
  2.             <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>  
  3.             <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>  
  4.             <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>  
  5.             <input type="submit" value="ändern" style="float:right">  
  6.         </form>   
  7. ?>  


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
Seite: 1

- Obige Beiträge stellen keine Äußerung oder Meinung von Pytal oder dessen Betreiber dar -