Napisałem dzisiaj taki formularz z załączonym skryptem JS. Całość działa swietnie i wogóle... Ale jest całość jest troche duża co przy połączeniu z php i dynamicznym generowaniu dużych ilosci wierszy formularza może znacznie zmulić serwer i przeglądarke klienta. Czy byłby ktoś w stanie to jakos zminimalizować?? Bo ja próbuje i co zmienie jakąś nazwe/id/klase itp to wszystko sie wali

(całość ma przypominać w działaniu panel PhpMyAdmin)
Oto kod:
<html> <head> <script type="text/javascript"> function getElementsByClassName(cn){ var arr = new Array(); var els = document.getElementsByTagName("*"); var exp= new RegExp("^(.* )?"+cn+"( .*)?$", "g"); for (var i = 0; i < els.length; i++ ){ if (exp.test(els[i].className)){ arr.push(els[i]); } } return arr; } function select_all(obj_check, cn_check, cn_uncheck, num_rows, style) { var checkboxes = getElementsByClassName(cn_check); var un_checkboxes = getElementsByClassName(cn_uncheck); for (i = 0; i < checkboxes.length; i++) { if (obj_check.checked == true) { checkboxes[i].checked = true; for (x = 0; x < un_checkboxes.length; x++) { un_checkboxes[x].checked = false; } } else { checkboxes[i].checked = false; } } for (i = 0; i < num_rows; i++) { if (obj_check.checked) { document.getElementById('accept' + i).style.background=style; document.getElementById('locked' + i).style.background=style; document.getElementById('phrase' + i).style.background=style; document.getElementById('phrase_row' + i).style.background=style; } else if (obj_check.checked == false && checkboxes[i].checked == false && un_checkboxes[i].checked == false) { document.getElementById('accept' + i).style.background=''; document.getElementById('locked' + i).style.background=''; document.getElementById('phrase' + i).style.background=''; document.getElementById('phrase_row' + i).style.background=''; } } } function select_all2(obj_check, cn_check, cn_uncheck, num_rows, style) { obj_check.checked = !obj_check.checked; select_all(obj_check, cn_check, cn_uncheck); var checkboxes = getElementsByClassName(cn_check); var un_checkboxes = getElementsByClassName(cn_uncheck); for (i = 0; i < num_rows; i++) { if (obj_check.checked) { document.getElementById('accept' + i).style.background=style; document.getElementById('locked' + i).style.background=style; document.getElementById('phrase' + i).style.background=style; document.getElementById('phrase_row' + i).style.background=style; } else if (obj_check.checked == false && checkboxes[i].checked == false && un_checkboxes[i].checked == false) { document.getElementById('accept' + i).style.background=''; document.getElementById('locked' + i).style.background=''; document.getElementById('phrase' + i).style.background=''; document.getElementById('phrase_row' + i).style.background=''; } } } function select_checkbox(obj_checked, uncheck_name, style, id){ var checkbox = document.getElementsByName(uncheck_name) if (obj_checked.checked == true) { document.getElementById('accept' + id).style.background=style; document.getElementById('locked' + id).style.background=style; document.getElementById('phrase' + id).style.background=style; document.getElementById('phrase_row' + id).style.background=style; checkbox[0].checked = false; } } function changeBox(cbox, ucbox, style, id) { ubox = eval(ucbox); document.getElementById('accept' + id).style.background=style; document.getElementById('locked' + id).style.background=style; document.getElementById('phrase' + id).style.background=style; document.getElementById('phrase_row' + id).style.background=style; if (ubox.checked) { ubox.checked = !ubox.checked; box = eval(cbox); box.checked = !box.checked; } else { box = eval(cbox); box.checked = !box.checked; } } function bg_phrase(id, style){ document.getElementById(id).style.background=style; } function bg_phrase_out(id, style){ document.getElementById(id).style.background=style; } function bg_phrase2(kolumna, id, style, box_checked, box_uchecked, td_checked){ var box1 = document.getElementById(box_checked); var box2 = document.getElementById(box_uchecked); if (box1.checked == false && box2.checked == false) { document.getElementById('accept' + id).style.background=style; document.getElementById('locked' + id).style.background=style; document.getElementById('phrase' + id).style.background=style; document.getElementById('phrase_row' + id).style.background=style; } else if (box1.checked == true && box2.checked == false && kolumna == 'locked') { document.getElementById(kolumna + id).style.background=style; } else if (box1.checked == false && box2.checked == true && (kolumna == 'accept' || kolumna == 'phrase')) { document.getElementById('accept' + id).style.background=style; } } function bg_phrase_out2(kolumna, id, style, box_checked, box_uchecked){ var box1 = document.getElementById(box_checked); var box2 = document.getElementById(box_uchecked); var kolor = document.getElementById('phrase_row' + id).style.background; if (box1.checked == false && box2.checked == false) { document.getElementById('accept' + id).style.background=''; document.getElementById('locked' + id).style.background=''; document.getElementById('phrase' + id).style.background=''; document.getElementById('phrase_row' + id).style.background=''; } else if (box1.checked == true && box2.checked == false && kolumna == 'locked') { document.getElementById(kolumna + id).style.background=kolor; } else if (box1.checked == false && box2.checked == true && (kolumna == 'accept' || kolumna == 'phrase')) { document.getElementById('accept' + id).style.background=kolor; } } </script> </head>
<body> <form> <table> <tr id="phrase_row0"> <td class="accept" id="accept0" onMouseOver="bg_phrase2('accept', '0', '#CCFFCC', 'a_checkbox0', 'b_checkbox0', 'phraset0');" onMouseOut="bg_phrase_out2('accept', '0', '#FFFFFF', 'a_checkbox0', 'b_checkbox0');"> <input class="a_checkbox" id="a_checkbox0" onclick="select_checkbox(this, 'x0', '#CCFFCC', '0');" type="checkbox" name="y0" value="opcja1" /></td> <td class="locked" id="locked0" onMouseOver="bg_phrase2('locked', '0', '#FFCCCC', 'a_checkbox0', 'b_checkbox0', 'phraset0');" onMouseOut="bg_phrase_out2('locked', '0', '#FFFFFF', 'a_checkbox0', 'b_checkbox0');"> <input class="b_checkbox" id="b_checkbox0" onclick="select_checkbox(this, 'y0', '#FFCCCC', '0');" type="checkbox" name="x0" value="opcja1" /></td> <td class="phrase" id="phrase0" onMouseOver="bg_phrase2('phrase', '0', '#CCFFCC', 'a_checkbox0', 'b_checkbox0', 'phraset0');" onMouseOut="bg_phrase_out2('phrase', '0', '#FFFFFF', 'a_checkbox0', 'b_checkbox0');" onclick="changeBox(document.getElementById('a_checkbox0'), document.getElementById('b_checkbox0'), '#CCFFCC', '0');"> </tr> <tr id="phrase_row1"> <td class="accept" id="accept1" onMouseOver="bg_phrase2('accept', '1', '#CCFFCC', 'a_checkbox1', 'b_checkbox1', 'phraset1');" onMouseOut="bg_phrase_out2('accept', '1', '#FFFFFF', 'a_checkbox1', 'b_checkbox1');"> <input class="a_checkbox" id="a_checkbox1" onclick="select_checkbox(this, 'x1', '#CCFFCC', '1');" type="checkbox" name="y1" value="opcja2" /></td> <td class="locked" id="locked1" onMouseOver="bg_phrase2('locked', '1', '#FFCCCC', 'a_checkbox1', 'b_checkbox1', 'phraset1');" onMouseOut="bg_phrase_out2('locked', '1', '#FFFFFF', 'a_checkbox1', 'b_checkbox1');"> <input class="b_checkbox" id="b_checkbox1" onclick="select_checkbox(this, 'y1', '#FFCCCC', '1');" type="checkbox" name="x1" value="opcja2" /></td> <td class="phrase" id="phrase1" onMouseOver="bg_phrase2('phrase', '1', '#CCFFCC', 'a_checkbox1', 'b_checkbox1', 'phraset1');" onMouseOut="bg_phrase_out2('phrase', '1', '#FFFFFF', 'a_checkbox1', 'b_checkbox1');" onclick="changeBox(document.getElementById('a_checkbox1'), document.getElementById('b_checkbox1'), '#CCFFCC', '1');"> </tr> <tr id="phrase_row2"> <td class="accept" id="accept2" onMouseOver="bg_phrase2('accept', '2', '#CCFFCC', 'a_checkbox2', 'b_checkbox2', 'phraset2');" onMouseOut="bg_phrase_out2('accept', '2', '#FFFFFF', 'a_checkbox2', 'b_checkbox2');"> <input class="a_checkbox" id="a_checkbox2" onclick="select_checkbox(this, 'x2', '#CCFFCC', '2');" type="checkbox" name="y2" value="opcja3" /></td> <td class="locked" id="locked2" onMouseOver="bg_phrase2('locked', '2', '#FFCCCC', 'a_checkbox2', 'b_checkbox2', 'phraset2');" onMouseOut="bg_phrase_out2('locked', '2', '#FFFFFF', 'a_checkbox2', 'b_checkbox2');"> <input class="b_checkbox" id="b_checkbox2" onclick="select_checkbox(this, 'y2', '#FFCCCC', '2');" type="checkbox" name="x2" value="opcja3" /></td> <td class="phrase" id="phrase2" onMouseOver="bg_phrase2('phrase', '2', '#CCFFCC', 'a_checkbox2', 'b_checkbox2', 'phraset2');" onMouseOut="bg_phrase_out2('phrase', '2', '#FFFFFF', 'a_checkbox2', 'b_checkbox2');" onclick="changeBox(document.getElementById('a_checkbox2'), document.getElementById('b_checkbox2'), '#CCFFCC', '2');"> </tr> <tr id="phrase_row3"> <td class="accept" id="accept3" onMouseOver="bg_phrase2('accept', '3', '#CCFFCC', 'a_checkbox3', 'b_checkbox3', 'phraset3');" onMouseOut="bg_phrase_out2('accept', '3', '#FFFFFF', 'a_checkbox3', 'b_checkbox3');"> <input class="a_checkbox" id="a_checkbox3" onclick="select_checkbox(this, 'x3', '#CCFFCC', '3');" type="checkbox" name="y3" value="opcja4" /></td> <td class="locked" id="locked3" onMouseOver="bg_phrase2('locked', '3', '#FFCCCC', 'a_checkbox3', 'b_checkbox3', 'phraset3');" onMouseOut="bg_phrase_out2('locked', '3', '#FFFFFF', 'a_checkbox3', 'b_checkbox3');"> <input class="b_checkbox" id="b_checkbox3" onclick="select_checkbox(this, 'y3', '#FFCCCC', '3');" type="checkbox" name="x3" value="opcja4" /></td> <td class="phrase" id="phrase3" onMouseOver="bg_phrase2('phrase', '3', '#CCFFCC', 'a_checkbox3', 'b_checkbox3', 'phraset3');" onMouseOut="bg_phrase_out2('phrase', '3', '#FFFFFF', 'a_checkbox3', 'b_checkbox3');" onclick="changeBox(document.getElementById('a_checkbox3'), document.getElementById('b_checkbox3'), '#CCFFCC', '3');"> </tr> <tr id="phraseall"> <td class="accept" id="phrase_a" onMouseOver="bg_phrase('phraseall', '#CCFFCC');" onMouseOut="bg_phrase_out('phraseall', '#FFFFFF');"> <input type="checkbox" class="a_checkbox" id="a_select_all" name="select_all[]" value="select_all" onclick="select_all(this, 'a_checkbox', 'b_checkbox', '4', '#CCFFCC');" /></td> <td class="locked" id="phrase_l" onMouseOver="bg_phrase('phraseall', '#FFCCCC');" onMouseOut="bg_phrase_out('phraseall', '#FFFFFF');"> <input type="checkbox" class="b_checkbox" id="b_select_all" name="select_all[]" value="select_all" onclick="select_all(this, 'b_checkbox', 'a_checkbox', '4', '#FFCCCC');" /></td> <td class="phrase" id="phrase_p" onMouseOver="bg_phrase('phraseall', '#CCFFCC');" onMouseOut="bg_phrase_out('phraseall', '#FFFFFF');" onclick="select_all2(document.getElementById('a_select_all'), 'a_checkbox', 'b_checkbox', '4', '#CCFFCC');"> Zaznacz wszystko</td> </tr> </table> </form> </body> </html>