Avatar billede Ulrich Seniormester
14. september 2017 - 21:26 Der er 7 kommentarer

Sammentælling.

Er der nogen der kan hjælpe med dette:
Skal have skrevet samlet sum alt efter om der sættes flueben eller det fjernes:
T er for next løkker

<label id="SamletSum"></label>,-

<%response.write conn.execute("select * from Aktivitet WHERE AktID = 'AktPris'")("Akt" & T) & " ,-"%>

Har en checkbox som der klikkes på, og den kalder JS function enableGem(1) som der har værdi 1 med sig:
<input type="checkbox" name="Akt<% Response.Write(T) %>" id="Akt<% Response.Write(T) %>" onclick="enableGem(<% Response.Write(T) %>)" value="checked" <%response.write navneopslag("Akt" & T)%>>

I JS function skal jeg så lave en sammentælling hvis flueben er der og trække fra hvis det ikke er der:

function enableGem(nummerknap) {
if (document.getElementById('Akt'+nummerknap).checked == true) {
document.getElementById('SamletSum').innerHTML = document.getElementById('SamletSum').innerHTML + document.getElementById('Akt'+nummerknap);
}
if (document.getElementById('Akt'+nummerknap).checked == false) {
document.getElementById('SamletSum').innerHTML = document.getElementById('SamletSum').innerHTML - document.getElementById('Akt'+nummerknap);
}
document.getElementById("form1").submit();
}

Nogen der er en løsning på dette?
Avatar billede Rune1983 Ekspert
15. september 2017 - 12:55 #1
Hurtig rettelse af kode. Kunne det ikke gøres sådan.

function enableGem(nummerknap) {
    var TotalSumPlus = 0;
    var TotalSumMinus = 0;
    if (document.getElementById('Akt'+nummerknap).checked == true) {
        TotalSumPlus++;
    }
    if (document.getElementById('Akt'+nummerknap).checked == false) {
        TotalSumMinus++;
    }
    var TotalSum = TotalSumPlus - TotalSumMinus;
    document.getElementById('SamletSum').innerHTML = TotalSum;
    document.getElementById("form1").submit();
}
Avatar billede Ulrich Seniormester
15. september 2017 - 19:25 #2
Ikke helt.
Beløbet der skal + eller - til samlet sum står her:
<%response.write conn.execute("select * from Aktivitet WHERE AktID = 'AktPris'")("Akt" & T) & " ,-"%>
og det skal vel laves til en label for at kan læse / bruge det i JS?
Det er det tal der skal + eller - alt efter om flueben bliver ændret. T er en for next løkke så der står 1 til 10 forskellige priser ned ad, og det er de der vælges / fjernes og tallet skal så ændre sig her:
document.getElementById('SamletSum').innerHTML = xxx
Avatar billede olsensweb.dk Ekspert
16. september 2017 - 09:06 #3
hvordan ser din generaret html ud, efter din asp er udført ??
gerne en kort demo side


prøv at søge her på E
https://www.google.dk/search?q=site%3Ahttp%3A%2F%2Fwww.computerworld.dk%2Feksperten+js+checkbox+samment%C3%A6lling

måske dette link kan give dig nogle ide'er
https://www.computerworld.dk/eksperten/spm/972439
Avatar billede Ulrich Seniormester
17. september 2017 - 01:54 #4
Her er løsningen:

    function enableGem(nummerknap) {
        document.getElementById('SamletSum').innerHTML = "0";
        for (t = 1; t < 40; t++) {
    if (document.getElementById('Akt'+t).checked == true && document.getElementById('Akt'+t+'Betalt').value != "") {
        document.getElementById('SamletSum').innerHTML = parseInt(document.getElementById('AktPrisLabel('+t+')').innerHTML) + parseInt(document.getElementById('SamletSum').innerHTML);
    } 
    }

        document.getElementById("form1").submit();
    }
Avatar billede Ulrich Seniormester
17. september 2017 - 09:41 #5
Har lige opdaget at hvis en if ikke findes, kører den ikke for løkken færdig:

for (t = 1; t < 41; t++)
if (document.getElementById('Akt'+t).checked == true && document.getElementById('Akt'+t+'Betalt').value != "")

Altså hvis ikke if sætningen ved fx t=12 findes, kører den ikke videre i løkken til 13 og op til slut.

Hvordan kan det være?
Avatar billede olsensweb.dk Ekspert
17. september 2017 - 18:17 #6
#5
har du mulighed for at lave name om i denne linje ??
<input type="checkbox" name="Akt<% Response.Write(T) %>" id="Akt<% Response.Write(T) %>" onclick="enableGem(<% Response.Write(T) %>)" value="checked" <%response.write navneopslag("Akt" & T)%>>


så det bliver
<input type="checkbox" name="Akt[]" id="Akt<% Response.Write(T) %>" onclick="enableGem(<% Response.Write(T) %>)" value="checked" <%response.write navneopslag("Akt" & T)%>>

var liste = document.getElementsByName("Akt[]");

alternativt
du kunne give dine input en class, som du selecter på
<input type="checkbox" class="Akt" name="Akt<% Response.Write(T) %>" id="Akt<% Response.Write(T) %>" onclick="enableGem(<% Response.Write(T) %>)" value="checked" <%response.write navneopslag("Akt" & T)%>>

var liste = document.getElementsByClassName('Akt');

så kan du looper den liste igennem
Avatar billede Ulrich Seniormester
17. september 2017 - 20:27 #7
Så stod jeg af....
Hvis fx Akt1 til Akt12 findes og Akt13 ikke findes og Akt14 til Akt40 findes, stopper den ved Akt 12 og kommer ikke videre?

Checkbox jeg kontrollere på i JS:
      <font face="Verdana">&nbsp;<input type="checkbox" name="Akt<% Response.Write(T) %>" id="Akt<% Response.Write(T) %>" onclick="enableGem(<% Response.Write(T) %>)" size="50" class="Outline" maxlength="50" tabindex="9" value="checked" <%response.write navneopslag("Akt" & T)%>></font></td>

Dropdown jeg kontrollere på i JS:
      <select size="1" name="Akt<% Response.Write(T) %>Betalt" id="Akt<% Response.Write(T) %>Betalt" onclick="enableGem(<% Response.Write(T) %>)" tabindex="11" class="Outline">


    function enableGem(nummerknap) {
        document.getElementById('gem').style.backgroundColor = "#A6FFA6";
        document.getElementById('gem').disabled = false;

        document.getElementById('SamletSum').innerHTML = "0";
        var t;
        for (t = 1; t < 41; t++) {
    if (document.getElementById('Akt'+t).checked == true && document.getElementById('Akt'+t+'Betalt').value != "") {
        document.getElementById('SamletSum').innerHTML = parseInt(document.getElementById('AktPrisLabel('+t+')').innerHTML) + parseInt(document.getElementById('SamletSum').innerHTML);
    } 
    }
        document.getElementById("form1").submit();
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester