kostenloser Webspace werbefrei: lima-city


Nachrichtenscript Markierungen Javascript

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Hallo, ich hab ein kleines Problem.

    Ich programmiere gerade ein Nachrichtenscript.

    Mit einem Javascript kann man mit einem Kontrollkästchen alle Nachrichten markieren (wie hier bei Lima).

    Mein Javascript sieht so aus:

    <script type="text/javascript" language="JavaScript">
    function selectAll(form,checked)
    {
            var x = document.mails.main.checked;
    
            for(var i=1;i<document.mails.length;i++)
            {
                    document.mails.elements[i].checked = x;
            }
    }
    </script>


    Der Fehler ist, man kann zwar alle markieren, aber klickt man nochmal auf das Kontrollkästchen passiert nichts mehr. Es sollte dann ja alle markierungen wieder weg gehen (wie hier bei Lima).

    Könnt Ihr mir helfen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Aus der einen Funktion kann man nicht viel ausnehmen. Baue mal ein "alert" (oder mehrere) ein und lasse dir die Variablen-Werte ausgeben.
  4. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    wagnerm schrieb:
    Aus der einen Funktion kann man nicht viel ausnehmen. Baue mal ein "alert" (oder mehrere) ein und lasse dir die Variablen-Werte ausgeben.


    Was soll ich mir denn ausgeben lassen?
  5. zB die Variable x oder document.mails.elements.checked nach der Zuweisung. Vielleicht läuft da etwas schief...
  6. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    wagnerm schrieb:
    zB die Variable x oder document.mails.elements.checked nach der Zuweisung. Vielleicht läuft da etwas schief...


    Ich habe das ins Script eingefügt.
    <script type="text/javascript" language="JavaScript">
    alert(x);
    alert(document.mails.elements.checked);
    </script>


    Aber es wird nichts ausgegeben, auch kein Javascript Fenster öffnet sich
  7. Ich meinte, dass du dir die Variablen während der Verarbeitung in der Funktion ausgeben lassen solltest. Probier mal das:
    <script type="text/javascript" language="JavaScript">
    function selectAll(form,checked)
    {
            var x = document.mails.main.checked;
            alert(x);
    
            for(var i=1;i<document.mails.length;i++)
            {
                    document.mails.elements[i].checked = x;
                    // für jedes Element erfolgt eine Anzeige
                    // wenn es sehr viele sind, dann probier statt dem [i] einfach ein [1] für eine exemplarische Ausgabe
                    alert(document.mails.elements[i].checked);
            }
    }
    </script>


  8. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    wagnerm schrieb:
    Ich meinte, dass du dir die Variablen während der Verarbeitung in der Funktion ausgeben lassen solltest. Probier mal das:
    <script type="text/javascript" language="JavaScript">
    function selectAll(form,checked)
    {
            var x = document.mails.main.checked;
            alert(x);
    
            for(var i=1;i<document.mails.length;i++)
            {
                    document.mails.elements[i].checked = x;
                    // für jedes Element erfolgt eine Anzeige
                    // wenn es sehr viele sind, dann probier statt dem [i] einfach ein [1] für eine exemplarische Ausgabe
                    alert(document.mails.elements[i].checked);
            }
    }
    </script>







    OK, jetzt kam was ;)

    Es kamen 4 Fenster mit dem Inhalt "true"

    Beitrag zuletzt geändert: 31.3.2010 10:35:27 von davy
  9. Wenn 4x true ausgegeben wurde, nehme ich an, dass es drei Checkboxen sind. Richtig?
    Wenn ja, dann liegt der Fehler wo anders, weil alles funktioniert.
    Wenn nein, muss der Fehler in der Funktion liegen.
  10. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    wagnerm schrieb:
    Wenn 4x true ausgegeben wurde, nehme ich an, dass es drei Checkboxen sind. Richtig?
    Wenn ja, dann liegt der Fehler wo anders, weil alles funktioniert.
    Wenn nein, muss der Fehler in der Funktion liegen.


    Ja, es sind 3 Checkboxen.

    Wo kann der Fehler noch liegen?
  11. Eigentlich überall nach dem Funktionsaufruf, da bis dort hin alles funktioniert...
  12. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    wagnerm schrieb:
    Eigentlich überall nach dem Funktionsaufruf, da bis dort hin alles funktioniert...


    Das Problem besteht immernoc.
    Hat noch jemand eine Idee?
  13. Vielleicht wäre es für die Community hilfreich, wenn Du auch erwähnst, dass Du mit dem JavaScript die Boxen markieren möchtest, die Du in diesem PHP Thread (http://www.lima-city.de/thread/php-nachrichtenscript) meinst.

    Dort hast Du das Input-Feld wie folgt definiert:

    <td class='nachrichten'><input type='checkbox' name='mails[]' value='$Id' /></td>


    Das "mails" Feld ist später ein Array.

    Folgendes könnte Abhilfe schaffen (so klappts bei mir):

    <script type="text/javascript">
    var Marker = false;
    function checkAllBoxes() 
    {
      if (Marker==false) {check=true; Marker = true;}
      else {check = false; Marker=false;}
      for (i = 0; i < document.forms.admin.elements['mails[]'].length; i++)
      {
         document.forms.admin.elements['mails[]'][i].checked = check;
      }
    }
    </script>
  14. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    rnitsche schrieb:
    Vielleicht wäre es für die Community hilfreich, wenn Du auch erwähnst, dass Du mit dem JavaScript die Boxen markieren möchtest, die Du in diesem PHP Thread (http://www.lima-city.de/thread/php-nachrichtenscript) meinst.

    Dort hast Du das Input-Feld wie folgt definiert:

    <td class='nachrichten'><input type='checkbox' name='mails[]' value='$Id' /></td>


    Das "mails" Feld ist später ein Array.

    Folgendes könnte Abhilfe schaffen (so klappts bei mir):

    <script type="text/javascript">
    var Marker = false;
    function checkAllBoxes() 
    {
      if (Marker==false) {check=true; Marker = true;}
      else {check = false; Marker=false;}
      for (i = 0; i < document.forms.admin.elements['mails[]'].length; i++)
      {
         document.forms.admin.elements['mails[]'][i].checked = check;
      }
    }
    </script>



    Das Javascript funktioniert leider nicht. Wenn ich die Checkbox, mit der alle anderen Checkboxen markiert werden, anklicke, passiert nichts.

    Für alle: Es handelt sich um die Checkboxen aus dem Thread: http://www.lima-city.de/thread/php-nachrichtenscript
  15. 1:1 kopieren funktioniert da auch nicht! Ich kann schlecht sehen, wie Dein Formular aussieht.

    1.) Bei Dir oben hieß die Funktion noch selectAll(form,checked), bei mir im Beispiel checkAllBoxes(). Du musst also entweder den Funktionsnamen oder den Aufruf anpassen

    2) Mein Skript sucht nach dem Element "mails[]" welches im Formular names "admin" steht. Mein Formular wird folgendermaßen definiert:
    <form name='admin' method='post' etc>


  16. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    rnitsche schrieb:
    1:1 kopieren funktioniert da auch nicht! Ich kann schlecht sehen, wie Dein Formular aussieht.

    1.) Bei Dir oben hieß die Funktion noch selectAll(form,checked), bei mir im Beispiel checkAllBoxes(). Du musst also entweder den Funktionsnamen oder den Aufruf anpassen

    2) Mein Skript sucht nach dem Element "mails[]" welches im Formular names "admin" steht. Mein Formular wird folgendermaßen definiert:
    <form name='admin' method='post' etc>





    Mein Formular sieht so aus:

    ...
    <form action='' method='post'>
    <table width='559'>
    		<tr class='nachrichten'>
    			<th class='nachrichten'>
    				<input type='checkbox' name='main' onclick='javascript:selectAll(mails,true);' value='ON' /></th>
    			<th class='nachrichten'>
    				Titel</th>
    			<th class='nachrichten'>
    				Datum</th>
    			<th class='nachrichten'>
    				Absender</th>
    		</tr>
    ...
    			<tr class='nachrichten'>
    				<td class='nachrichten'><input type='checkbox' name='mails[]' value='$Id' /></td>
    				<td class='nachrichten'><a href='nachricht_lesen.php?id=$Id'><b>$betreff</b></a></td>
    				<td class='nachrichten'><b>$date</b></td>
    				<td class='nachrichten'><a href='profil.php?id=$userid'><b>$sender</b></a></td>
    			</tr>
    ...
    </form>


    Und die Checkbox zum Markieren aller Nachrichten:

    echo "<input type='submit' name='delpn1' value='Markierte Nachrichten l&ouml;schen'>";


    Momentan sieht mein Javascript so aus, es funktioniert aber nicht:

    <script type="text/javascript">
    var Marker = false;
    function selectAll(form,checked) 
    {
      if (Marker==false) {check=true; Marker = true;}
      else {check = false; Marker=false;}
      for (i = 0; i < document.main.elements['mails[]'].length; i++)
      {
         document.main.elements['mails[]'][i].checked = check;
      }
    }
    </script>
  17. Da ist immer noch der Wurm drin, da einiges unstrukturiert ist. Probier mal folgenden Vorschlag:

    das Formular (gekürzt auf das Wesentliche):
    <html>
    <head>
    <script type="text/javascript">
      var Marker = false;   // steht diese Variable auf false, wird davon ausgegangen, dass die Checkboxen erst abgewählt sind und durch den ersten Klick alle angeklickt werden sollen (sonst genau andersherum)
    
      function selectAll(formular) 
      {
        if (Marker==false) {check=true; Marker = true;}
        else {check = false; Marker=false;}
        for (i = 0; i < formular.elements['mails[]'].length; i++)
        {
           formular.elements['mails[]'][i].checked = check;
        }
      }
    </script>
    </head>
    
    <body>
    <form action='' method='post' name='main'>
    <input type='checkbox' name='selectBoxes' onclick='selectAll(main);' value='ON' />
    <input type='checkbox' name='mails[]' value='$Id' />  <!-- Für jede Nachricht eine Checkbox mit der aktuellen ID -->
    </form>
    </body>
    </html>
  18. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Danke. Aber irgendwie gehts immernoch nicht.

    Mein Javascript lautet:

    <script type="text/javascript">
      var Marker = false;   // steht diese Variable auf false, wird davon ausgegangen, dass die Checkboxen erst abgewählt sind und durch den ersten Klick alle angeklickt werden sollen (sonst genau andersherum)
    
      function selectAll(formular) 
      {
        if (Marker==false) {check=true; Marker = true;}
        else {check = false; Marker=false;}
        for (i = 0; i < formular.elements['mails[]'].length; i++)
        {
           formular.elements['mails[]'][i].checked = check;
        }
      }
    </script>


    Checkbox:

    <form name='formular' action='' method='post'>
    <table width='559'>
    		<tr class='nachrichten'>
    			<th class='nachrichten'>
    				<input type='checkbox' name='selectBoxes' onclick='selectAll(main);' value='ON' /></th>
    			<th class='nachrichten'>
    				Titel</th>
    			<th class='nachrichten'>
    				Datum</th>
    			<th class='nachrichten'>
    				Absender</th>
    		</tr>


    Checkbox für jede Nachricht:

    <input type='checkbox' name='mails[]' value='$Id' />
  19. Dein Formular muss 'main' heißen, so wie es vorher war.

    <form .... name='main'>


    oder aber den Funktionsaufruf anpassen

    onclick="selectAll(Formularname)"


    und alles muss in eine Datei, nicht trennen!
  20. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    rnitsche schrieb:
    Dein Formular muss 'main' heißen, so wie es vorher war.

    <form .... name='main'>


    oder aber den Funktionsaufruf anpassen

    onclick="selectAll(Formularname)"


    und alles muss in eine Datei, nicht trennen!


    Danke, jetzt klappt alles

    EDIT: Ich merke gerade, dass, wenn nur 1 Nachricht da ist, das Checkfeld, was eigentlich diese eine Nachricht auswählen sollte, nicht funktioniert. Ab 2 Nachrichten geht es allerdings.

    Beitrag zuletzt geändert: 31.3.2010 23:37:58 von davy
  21. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!