Script hängt sich auf

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Script hängt sich auf

    Guten Morgen ;)

    Ich habe folgendes Script, dass aus den Werten eines binären Rechte-Systems die Check-Boxen mit den jewiligen Rechten ankreuzt.
    Checkbox 1 value="1" (News schreiben), Berechtigung 1 aus Datenbank übergeben, CHeckbox 1 wird angekreuzt. Dieses Script hängt sich jedoch auf.

    SCript:

    Quellcode

    1. function getCheckboxByValue(v) {
    2. var inputs = document.getElementsByTagName('input');
    3. for (var i = 0; i < inputs.length; i ++) {
    4. if (inputs[i].type == 'checkbox' && inputs[i].value == v) {
    5. return inputs[i];
    6. }
    7. }
    8. return false;
    9. }
    10. window.onload = function(){
    11. var select_input = document.getElementById('defined');
    12. select_input.onchange = function(){
    13. var perms = this.value;
    14. var pow = 1;
    15. while(1)
    16. {
    17. var box = getCheckboxByValue(pow);
    18. if(box){
    19. box.checked = ((perms & pow) == pow) ? true : false;
    20. }
    21. var pow = Math.pow(pow, 2);
    22. }
    23. while(getCheckboxByValue(pow).length);
    24. };
    25. };
    Alles anzeigen


    HTML:

    HTML-Quellcode

    1. <form action="team.php?job=add" method="POST" id="add_user">
    2. Username:<input type="text" name="username" id="username" />Titel:<input type="text" name="title" id="title">Vordefinierte:<select id="defined"><option></option><option value="511">Admin</option></select><br><br>
    3. <table id="rights_select" border="0">
    4. <tr>
    5. <td class="first">News schreiben:</td><td class="boxes"><input type="checkbox" name="rights[]" value="1"></td>
    6. <td class="second">User hinzuf&uuml;gen:</td><td class="boxes"><input type="checkbox" name="rights[]" value="8"></td>
    7. <td class="third">Team-Mitglied hinzuf&uuml;gen:</td><td class="boxes"><input type="checkbox" name="rights[]" value="64"></td>
    8. </tr>
    9. <tr>
    10. <td>News editieren:</td><td class="boxes"><input type="checkbox" name="rights[]" value="2"></td>
    11. <td class="second">User bearbeiten:</td><td class="boxes"><input type="checkbox" name="rights[]" value="16"></td>
    12. <td class="third">Team-Mitglied bearbeiten:</td><td class="boxes"><input type="checkbox" name="rights[]" value="128"></td>
    13. </tr>
    14. <tr>
    15. <td>News l&ouml;schen:</td><td class="boxes"><input type="checkbox" name="rights[]" value="8"></td>
    16. <td class="second">User bannen:</td><td class="boxes"><input type="checkbox" name="rights[]" value="32"></td>
    17. <td class="third">Team-Mitglied l&ouml;schen:</td><td class="boxes"><input type="checkbox" name="rights[]" value="256"></td>
    18. </tr>
    19. </table>
    20. <input type="submit" id="submit" value="Hinzuf&uuml;gen">
    21. </form>
    Alles anzeigen
  • Ich habe mal testweise

    while(1)
    {

    }
    while(getCheckboxByValue(pow).length);

    entfernt und bei mir funktionierte es wenn ich Admin auswähle das bei News Schreiben die checkbox ausgewählt wurde.

    Du hast mit der while(1){} ebend eine endlosschleife programmiert kein wunder das sich das aufhängt :D
    vorallem die while(getCheckboxByValue(pow).length); hat kein nennenswerten nutzen.
    Den inhalt der schleife habe ich stehen lassen und ich merkte es funktionierte.

    Du brauchst keine unendliche schleife in JS um etwas zu checken das ist alles Event basiert :P
    Erfahrungen: Web( HTML, CSS, JS, PHP, NODEJS) SOFT( C++, Purebasic)
  • Ah, vielen Dank :D

    Das sollte eigentlich eine do.... while-Schleife sein


    Edit: Ich habs mal umgeschrieben, funktioniert jedoch trotzdem nicht für alle Checkboxen :(



    window.onload = function(){
    var select_input = document.getElementById('defined');

    select_input.onchange = function(){

    var perms = this.value;
    var pow = 1;
    var box = getCheckboxByValue(pow);


    while(box)
    {
    box.checked = ((perms & pow) == pow) ? true : false;
    pow = pow*2;
    box = getCheckboxByValue(pow);
    }


    };
    };

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von JaffaCoder ()

  • erkläre mir mal bitte wie du das rechtesystem hast sprich was du genau vor hast.

    Ich habe nun den ablaufplan so verstanden

    User wählt eine gruppe
    => JS sendet ein request wohl zu PHP bla bla datenbank werte und php sendet es zurück
    Javascript soll dann alle checkboxen mit eine checked oder unchecked beschreiben oder ?
    Erfahrungen: Web( HTML, CSS, JS, PHP, NODEJS) SOFT( C++, Purebasic)
  • Alsoooo.... :D

    Ich habe ein binäres Rechtesystem:

    News Schreiben: 1
    News Editieren: 2
    News Löschen: 4
    User löschen: 8
    User Editieren: 16

    Jetzt gibt es eine Liste mit den ganzen Checkboxen, die als Value die einzelnen Rechte haben...

    Dann gibt es noch eine Dropdown-Liste mit vordefinierten Benutzergruppen wie einem Newsschreiber, der News schreiben/editieren/löschen darf... Daraus ergibt sich 7 als Wert. Nun wird auf dem gesamten Dokument durchgeangen, welche CHeckboxen gedrückt werden müssen, um die Rechte für den Titel zu vergeben...
  • ahhh
    nun realisiert mein kopf das langsam wie du es willst

    Nur ich habe grade überhaubt keine Idee dieses system auf die checkboxen zu übertragen.
    Ich hätte das auch anders realisiert das ich jede checkbox ein name verpass und die dazu liegende rechte.
    Dann einfach ein array durchlaufen um die jeweiligen werte zu setzten.

    ###

    News Schreiben: 1
    News Editieren: 2
    News Löschen: 4

    Also Schreiben nur bei 1
    Editieren und schreiben mit 3
    alles zusammen bei 7

    Puh da klügel ich mal ein wenig wie ich das realisieren kann aber das rechte system klingt interessant :D
    auch wenn ich es so nicht umsetzen würde :)
    Erfahrungen: Web( HTML, CSS, JS, PHP, NODEJS) SOFT( C++, Purebasic)