Witam
mam pytania do poniższego kodu.
1. Jak zrobić aby po zaznaczeniu przycisku "Wszyscy" oprócz zaznaczeniu wszystkich checkboxów liczyło także dla nich średnią poniżej? I w druga stronę, po wyczyszczeniu czyściło wartość średniej.
2. Jak zmodyfikować kod, aby liczba zaznaczonych checkboxów pojawiała się bez pola tekstowego, w miejscu Zaznaczono2?
3. Czy istnieje możliwość aby po odznaczeniu wszystkich checkboxów w wyniku średniej nie pojawiało się "NaN"?
4. Czy jeśli na liście checkboxów byłoby wiecej imion, to czy da sie ustawić aby w każdym wierszu było ich maksymalnie np. 5?
Kod może być trochę rozbudowany i część rzeczy moze byc wykonane okrężną drogą, ponieważ to kod zapożyczony i zmodyfikowany do moich potrzeb. Z góry dziękuję za pomoc.
Kod:
<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="utf-8" />
<title>Średnia</title>
</head><body>
<body onload="średnia();">
<p>
<script>
function licz1(form) {
var zaznaczone1 = 0;
var limit = 50;
var max = gospodarz.gp.length;
for (var idx = 0; idx < max; idx++) {
if (eval("document.gospodarz.gp[" + idx + "].checked") == true) {
zaznaczone1 += 1;
}
}
document.getElementById("check1").value=zaznaczone1;
}
zaznaczone1=0; //jeśli jakieś checkboxy są domyślnie zaznaczone, to tu wpisać ich liczbę
max=50;
function sprawdz1(ktory1) {
if(!ktory1.checked) zaznaczone1--; else if(zaznaczone1==max) {ktory1.checked=0; alert('[komunikat...]');} else zaznaczone1++;
}
var sum1 = 0;
function sumAddresses1(element) {
if(element.checked === true) {
sum1 += parseFloat(element.value);
} else {
sum1 -= parseFloat(element.value);
}
document.getElementById('sumAmount1').innerHTML = (sum1/zaznaczone1).toFixed(2); // obliczanie średniej
}
function checkboxes1(){
var inputElems = document.getElementsByTagName("input"),
count = 0;
for (var i=0; i<inputElems.length; i++) {
if (inputElems[i].type === "checkbox1" && inputElems[i].checked === true){
count++;
alert(count);
document.getElementById('checkboxess1').innerHTML = sum1;
}
}}
function makeCheck(thisForm)
{
for (i = 0; i < thisForm.gp.length; i++)
{
thisForm.gp[i].checked=true
}
}
function makeUncheck(thisForm)
{
for (i = 0; i < thisForm.gp.length; i++)
{
thisForm.gp[i].checked=false
}
}
</script>
<div style="width:450px; background-color:white; float:left; margin-left:25px">
<form method="post" name=gospodarz>
<b>Klasa 2a</b><br><br>
<input type="button" value="Wszyscy" onclick="makeCheck(this.form)">
<input type="button" value="Wyczyść" onclick="makeUncheck(this.form)">
<br><br>
<u>Chłopcy:</u>
<br><label><input type="checkbox" name="gp" value="3" onclick="licz1(this.form);sprawdz1(this);sumAddresses1(this)" />Maciek</label>
<label><input type="checkbox" name="gp" value="4" onclick="licz1(this.form);sprawdz1(this);sumAddresses1(this)" />Radek</label>
<label><input type="checkbox" name="gp" value="5" onclick="licz1(this.form);sprawdz1(this);sumAddresses1(this)" />Wojtek</label>
<br><br>Zaznaczono1:<input id="check1" type="text" size="1">
<br>Zaznaczono2 :<div id="check1"></div><br><b>Średnia </b>
<b><div id="sumAmount1"></div></b>
</form></body>
</div>