CheckAll klappt nicht

Buba235

Erfahrenes Mitglied
Hallo Leute!


Ich bin neu in JS und hab da gleich mal ne Frage: Wie kann ich denn mit einer CheckBox (oder einem Button) alle checkboxen markieren? Ich hab da folgenden Code, der aber nicht klappt:

Code:
<html>
    <head>
        <title></title>
    </head>
    <style type="text/css">
        td {
            font-size: 8pt;
        }
    </style>

    <link rel="stylesheet" type="text/css" href="http://2.9.153.47/irmonitor_neu/stylesheet/irmonitor.css">
    
<body>

<?php
    //Session starten, Funktionsdatei einbinden, CSS-Link aurufen
    session_start();


    //Überprüfen, ob der Benutzer bereits eingeloggt ist
    if (session_is_registered("login")) {
        include ("../irmonitor_neu/function.inc.php");
        css_link();
        update_menue("");
    }


    // Includes
    include "datenbank.php";
    
    // Uebergebene Variablen des ausgewaehlten Datums holen
    $_SESSION["TagS"] = $TagS;
    $_SESSION["MonatS"] = $MonatS;
    $_SESSION["JahrS"] = $JahrS;
    $_SESSION["StundeS"] = $StundeS;
    $_SESSION["MinuteS"] = $MinuteS;
    $_SESSION["TagE"] = $TagE;
    $_SESSION["MonatE"] = $MonatE;
    $_SESSION["JahrE"] = $JahrE;
    $_SESSION["StundeE"] = $StundeE;
    $_SESSION["MinuteE"] = $MinuteE;

?>

<h1>Auswahl der verschiedenen IMSIs</h1>

    <center>
    <table>
        <tr>
            <td>
                <b>Im Zeitraum von: </b>
                <?php echo "$TagS.$MonatS.$JahrS $StundeS:$MinuteS Uhr"; ?>
            </td>
            <td>
                <b>bis: </b>
                <?php echo "$TagE.$MonatE.$JahrE $StundeE:$MinuteE Uhr"; ?>
            </td>
        </tr>
    </table>
    </center>

<script language="JavaScript" type="text/javascript">
    //Diese Funktion ermoeglicht es durch Markieren einer CheckBox alle vorhandenen
    //aus zu waehlen
    function CheckAll(field) {
        for (var i = 0; i < field.length; i++) {
            field[i].checked = true;
        }
    }
</script>


    
<?php
    // Datenbank
    mssql_select_db("Roma_Spiegel", $db) or die ("Datenbank nicht gefunden");

    $query = "SELECT IMSI FROM dbo.SIMCards WHERE IMSI != '' GROUP BY IMSI ORDER BY IMSI DESC";

    $result = mssql_query($query);

    //Fehlerabfrage
    if(!$result) {
        echo "Fehler in der SQL Syntax";
        exit;
    }

    $num = mssql_num_rows($result);

    $all[][] = array(array("", "", ""));

    //Datensaetze ermitteln
    $i = 0;
    if ($num > 0){
        while($row = mssql_fetch_row($result)) {
            $all[$i][0] = $row[0];
            $all[$i][1] = $row[1];
            $i++;
        }
    }


    echo "<form action=\"./untermenue.php\">
    <table>
        <tr>
            <td>
                <input type=\"submit\" value=\"Zur&uuml;ck zur Auswahl\">
            </td>
        </tr>
        <tr>
            <td>
                <input type=\"checkbox\" name=\"checkAll\" onclick=\"this.value=CheckAll(this.form.check)\">Alle ausw&auml;hlen
            </td>
        </tr>
        <table>
    </form>";
        
    echo "<br><br><br>";

    //Tabellenbeginn
    echo "<table align=\"center\" width=\"400px\" cellpadding=\"10\" cellspacing=\"1\" border=\"1px\">\n
        <tr>\n
            <td bgcolor=\"#f0f0f0\">
                <b>ID </b>
            </td>

            <td bgcolor=\"#f0f0f0\">
                <b>IMSI</b>
            </td>
        </tr>\n";

    $j = 1;
    for ($i = 0; $i < count($all); $i++){
        echo "<tr>\n
            <td bgcolor=\"#f0f0f0\">
                " . $j . " <input type=\"checkbox\" name=\"check\">
            </td>\n

            <td bgcolor=\"#f0f0f0\">
                " . $all[$i][0] . "
            </td>\n
            </tr>\n";
        $j++;
    }

    //Tabellenende
    echo "</table>";
    
?>

</body>
</html>


Was mach ich denn falsch?

Gruß
Buba
 
Du hast den schliessenden <form>-Tag zu früh gesetzt...die Boxen befinden sich dadurch nicht innerhalb des Formulars und werden nicht gefunden.
 
Hallo!


Also ich hab es jetzt so gemacht:

Code:
<script language="JavaScript" type="text/javascript">
    //Diese Funktion ermoeglicht es durch Markieren einer CheckBox alle vorhandenen
    //aus zu waehlen
    function CheckAll(field[]) {
        for (var i = 0; i < field.length; i++) {
            field[i].checked = true;
        }
    }
</script>


    
<?php
    // Datenbank
    mssql_select_db("Roma_Spiegel", $db) or die ("Datenbank nicht gefunden");

    $query = "SELECT IMSI FROM dbo.SIMCards WHERE IMSI != '' GROUP BY IMSI ORDER BY IMSI DESC";

    $result = mssql_query($query);

    //Fehlerabfrage
    if(!$result) {
        echo "Fehler in der SQL Syntax";
        exit;
    }

    $num = mssql_num_rows($result);

    $all[][] = array(array("", "", ""));

    //Datensaetze ermitteln
    $i = 0;
    if ($num > 0){
        while($row = mssql_fetch_row($result)) {
            $all[$i][0] = $row[0];
            $all[$i][1] = $row[1];
            $i++;
        }
    }


    echo "<form action=\"./untermenue.php\">
    <table>
        <tr>
            <td>
                <input type=\"submit\" value=\"Zur&uuml;ck zur Auswahl\">
            </td>
        </tr>
        <tr>
            <td>
                <input type=\"checkbox\" name=\"checkAll\" onclick=\"this.value=CheckAll(this.form.check[])\">Alle ausw&auml;hlen
            </td>
        </tr>
        <table>";
        
    echo "<br><br><br>";

    //Tabellenbeginn
    echo "<table align=\"center\" width=\"400px\" cellpadding=\"10\" cellspacing=\"1\" border=\"1px\">\n
        <tr>\n
            <td bgcolor=\"#f0f0f0\">
                <b>ID </b>
            </td>

            <td bgcolor=\"#f0f0f0\">
                <b>IMSI</b>
            </td>
        </tr>\n";

    $j = 1;
    for ($i = 0; $i < count($all); $i++){
        echo "<tr>\n
            <td bgcolor=\"#f0f0f0\">
                " . $j . " <input type=\"checkbox\" name=\"check[]\">
            </td>\n

            <td bgcolor=\"#f0f0f0\">
                " . $all[$i][0] . "
            </td>\n
            </tr>\n";
        $j++;
    }

    //Tabellenende
    echo "</table>
</form>";
    
?>

Leider klappt es immer noch nicht. Es passiert einfach gar nichts!
 
Da du jetzt eckige Klammern im Elementnamen hast, musst du selbiger über "elements" ansprechen:
Code:
CheckAll(this.form.elements['check[]'])
 
Hallo!


Ich hab alles so gemacht, wie du es beschrieben hast, aber es klappt nicht. Entweder bin ich zu doof oder ich überseh da immer was.

Hier nochmal:

Code:
<script language="JavaScript" type="text/javascript">
    //Diese Funktion ermoeglicht es durch Markieren einer CheckBox alle vorhandenen
    //aus zu waehlen
    function CheckAll(this.form.elements[]) {
        for (var i = 0; i < this.form.elements[]; i++) {
            this.form.elements[i].checked = true;
        }
    }
</script>


    
<?php
    // Datenbank
    mssql_select_db("Roma_Spiegel", $db) or die ("Datenbank nicht gefunden");

    $query = "SELECT IMSI FROM dbo.SIMCards WHERE IMSI != '' GROUP BY IMSI ORDER BY IMSI DESC";

    $result = mssql_query($query);

    //Fehlerabfrage
    if(!$result) {
        echo "Fehler in der SQL Syntax";
        exit;
    }

    $num = mssql_num_rows($result);

    $all[][] = array(array("", "", ""));

    //Datensaetze ermitteln
    $i = 0;
    if ($num > 0){
        while($row = mssql_fetch_row($result)) {
            $all[$i][0] = $row[0];
            $all[$i][1] = $row[1];
            $i++;
        }
    }


    echo "<form action=\"./untermenue.php\">
    <table>
        <tr>
            <td>
                <input type=\"submit\" value=\"Zur&uuml;ck zur Auswahl\">
            </td>
        </tr>
        <tr>
            <td>
                <input type=\"checkbox\" name=\"checkAll\" onclick=\"this.value=CheckAll(this.form.elements['check[]'])\">Alle ausw&auml;hlen
            </td>
        </tr>
        <table>";
        
    echo "<br><br><br>";

    //Tabellenbeginn
    echo "<table align=\"center\" width=\"400px\" cellpadding=\"10\" cellspacing=\"1\" border=\"1px\">\n
        <tr>\n
            <td bgcolor=\"#f0f0f0\">
                <b>ID </b>
            </td>

            <td bgcolor=\"#f0f0f0\">
                <b>IMSI</b>
            </td>
        </tr>\n";

    $j = 1;
    for ($i = 0; $i < count($all); $i++){
        echo "<tr>\n
            <td bgcolor=\"#f0f0f0\">
                " . $j . " <input type=\"checkbox\" name=\"check[]\">
            </td>\n

            <td bgcolor=\"#f0f0f0\">
                " . $all[$i][0] . "
            </td>\n
            </tr>\n";
        $j++;
    }

    //Tabellenende
    echo "</table>
</form>";
    
?>
 
Es wäre hilfreich, wenn du nicht immer zwischendurch irgendwas beliebiges ändern würdest.:rolleyes:
Ursprünglich sah deine Funktion so aus:
Code:
function CheckAll(field) {
        for (var i = 0; i < field.length; i++) {
            field[i].checked = true;
        }
    }
...wenn du den ursprünglichen Zustand wieder herstellst, sollte es auch klappen.
 

Neue Beiträge

Zurück