Avatar billede aerobee Nybegynder
16. juli 2005 - 15:54 Der er 31 kommentarer og
1 løsning

<strike> ved check i checkbox

Hejsa.

Jeg har lavet en formular, hvori der er checkboxe.
Teksten i formularen er fra et database udtræk.


Og her kommer mit spørgsmål:

Jeg mangler et script der gør sådan, at når man markere en checkbox bliver teksten rød, og der kommer en rød <strike> over den tekst der står ud foran checkboxen
(Viser at den markerede post er markeret til sletning)


Udtræk af kode som det handler om:

<td><%if tab(i,6)=0 then%><a href="save.asp?action=laspost&PostID=<%=tab(i,1)%>&AfsenderID=<%=tab(i,5)%>"><img src="images/mail-unread.gif" alt="Du har ikke læst denne mail" border="0"></a><%else%><a href="save.asp?action=laspost&PostID=<%=tab(i,1)%>&AfsenderID=<%=tab(i,5)%>"><img src="images/mail-read.gif" alt="Du har læst denne mail" border="0"></a><%end if%></td><td><%=tab(i,7)%>&nbsp;kl.&nbsp;<%=tab(i,8)%></td><td><a href="members/resultat.asp?MemberID=<%=tab(i,5)%>"><%=left(tab(i,3),10)%></a></td><td></td><td><a href="save.asp?action=laspost&PostID=<%=tab(i,1)%>&AfsenderID=<%=tab(i,5)%>"><%=tab(i,4)%></a></td><td align="right"><input type="checkbox" value="<%=tab(i,1)%>" name="delmail" onclick="markDelete(this)"></td></tr>


Og her er en oversigt over tabs så i kan se hvad tallene betyder:

tab(i,1) = rs("PostID")
tab(i,2) = rs("MemberID")
tab(i,3) = rs("Brugernavn")
tab(i,4) = rs("Emne")
tab(i,5) = rs("AfsenderID")
tab(i,6) = rs("Read")
tab(i,7) = rs("Dato")
tab(i,8) = rs("Tid")


Dette er de tabs der skal <strike>´s:

tab(i,4) = rs("Emne")
tab(i,7) = rs("Dato")
tab(i,8) = rs("Tid")


Ser selv spørgsmålet som yderst svær og derfor mener jeg at 200 points er velfortjent til den
der kan hjælpe mig.
Avatar billede aerobee Nybegynder
16. juli 2005 - 15:59 #1
Jeg bruger nu følgende script:

<script type="text/javascript">
function markDelete(elm){
var par = elm.parentNode;
par.previousSibling.style.textDecoration = elm.checked?"line-through":"";
par.previousSibling.style.color = elm.checked?"red":"";
}
</script>

Problemet ved ovenstående script er at den kun <strike>´er
tab(i,4) = rs("Emne")
og at <strike>´en er rød men teksten er stadig sort.
Avatar billede nielle Nybegynder
16. juli 2005 - 16:35 #2
Måske sådan her?

<script type="text/javascript">
function toggleStrikethrough(elm)
{
    id = elm.id;
    id = id.substring(2);
    id = "txt" + id;

    elm2 = document.getElementById(id);

    elm2.style.color = (elm.checked) ? "red" : "black";
    elm2.style.textDecoration = (elm.checked) ? "line-through" : "";
}
</script>

<input id="cb1" type="checkbox" onclick="toggleStrikethrough(this)"><br>
<span id="txt1">blah blah<br></span><br>

<input id="cb2" type="checkbox" onclick="toggleStrikethrough(this)"><br>
<span id="txt2">blah blah<br></span><br>
Avatar billede nielle Nybegynder
16. juli 2005 - 16:37 #3
Checkboksen id'es med et "cb" efterfulgt af et ellere andet - her 1 og 2.

Den tilsvarende span, som indeholder teksten, id'es med txt efterfulgt af det samme som checkboksen.
Avatar billede aerobee Nybegynder
16. juli 2005 - 16:45 #4
nielle//

Skal helst kun bruge 1 <input>.. Læg mærke til at det er det jeg gør nu.. Det dur jo ikke at jeg skal markere 2 checkboxe før at det hele bliver <strike>´et :)

Eller misforstår jeg noget?
Avatar billede aerobee Nybegynder
16. juli 2005 - 16:58 #5
Og den skal også kunne "arbejde" sammen med dette script ;)

<script type="text/javascript">
function selectAll(elm){
var inps = document.getElementsByTagName("INPUT");
var chck = elm.checked;
for(i=0;inps.length>i;i++){
if(inps[i].type=="checkbox"&&inps[i].name=="delmail"){
inps[i].checked = chck;
markDelete(inps[i]);
}
}
document.getElementById('alle').innerHTML = chck?"Slet ":"Slet ";
}
</script>

Scriptet der gør sådan at man ved 1 klik kan markere alle checkboxe på en gang..

Det er et email system skal du se.. Derfor kan der jo være mange mails der skal slettes på en gang, og så er det jo lækkert med en knap der markere alle ved 1 klik (bruger jeg nu)
Avatar billede aerobee Nybegynder
16. juli 2005 - 16:59 #6
Men det du har lavet indtil nu virker fint på den ene.. men ikke den anden.. kun hvis jeg indsætter 2 checkboxe.. Men det er jo lidt dumt at man skal markere 2 checkboxe for at slette en mail.
Plus den kan heller ikke arbejde sammen med ovenstående script.
Avatar billede nielle Nybegynder
16. juli 2005 - 17:05 #7
Det fremgik ikke helt at du ville slette mere end en blok tekst med din checkboks.

Prøv dette i stedet:

<script type="text/javascript">
function toggleStrikethrough(elm)
{
    per = elm.parentNode;

    for (currNode=per.firstChild; currNode!=null; currNode=currNode.nextSibling)
    {
        // alert("z " + currNode.id);

        currNode.style.color = (elm.checked) ? "red" : "black";
        currNode.style.textDecoration = (elm.checked) ? "line-through" : "";
    }
}
</script>

<div id="blok1">
<input type="checkbox" onclick="toggleStrikethrough(this)"><br>
<span>1 blah blah</span><br>
<span>2 blah blah</span><br>
<span>3 blah blah</span><br>
</div>

<div id="blok2">
<input type="checkbox" onclick="toggleStrikethrough(this)"><br>
<span>4 blah blah</span><br>
<span>5 blah blah</span><br>
<span>6 blah blah</span><br>
</div>
Avatar billede aerobee Nybegynder
16. juli 2005 - 17:23 #8
Nu kan jeg ikke få den til at strike noget som helst.

Men nielle..
Jeg er bange for du misforstår mig..

Kig på koden som er i spørgsmålet øverst.

Det er præcis nedendtående kode som skal strikes.
De står i samme linje. 7 er dato 8 er tid og 4 er emnet på mailen.
<%=tab(i,7)%>
<%=tab(i,8)%>
<%=tab(i,4)%>

Og der må kun være 1 checkbox som skal markeres og
<%=tab(i,7)%>
<%=tab(i,8)%>
<%=tab(i,4)%>
bliver alle striket..
Avatar billede aerobee Nybegynder
16. juli 2005 - 17:24 #9
Det er et mail system.. Hvor der på 1 linje står dato og tid for hvornår mailen er modtaget samt emnet.. Og det er dem der skal strikes som svare til de tabs beskrevet oven over..
Avatar billede nielle Nybegynder
16. juli 2005 - 17:59 #10
Prøv at kig på denne kode:

<script type="text/javascript">
function toggleAllMails(elm)
{
    perAll = elm.parentNode;
   
    for (currNodeAll=perAll.firstChild; currNodeAll!=null; currNodeAll=currNodeAll.nextSibling)   
    {
        elm2 = currNodeAll.firstChild;
        if (elm2 != null)
        {
            elm2.checked = ! elm2.checked
            toggleMail(elm2);
        }
    }
}

function toggleMail(elm)
{
    per = elm.parentNode;

    for (currNode=per.firstChild; currNode!=null; currNode=currNode.nextSibling)
    {
        if (currNode.style != null && currNode.name == "delete")
        {
            currNode.style.color = (elm.checked) ? "red" : "black";
            currNode.style.textDecoration = (elm.checked) ? "line-through" : "";
        }
    }
}
</script>

<div name="allMails">
<input type="checkbox" onclick="toggleAllMails(this)"> Slet alle mails<br>

<div name="mail1">
<input type="checkbox" onclick="toggleMail(this)"> Slet denne mail<br>
<span name="delete">1 blah blah</span><br>
<span>2 blah blah</span><br>
<span name="delete">3 blah blah</span><br>
</div>

<div name="mail2">
<input type="checkbox" onclick="toggleMail(this)"> Slet denne mail<br>
<span>4 blah blah</span><br>
<span name="delete">5 blah blah</span><br>
<span name="delete">6 blah blah</span><br>
</div>

</div>
Avatar billede nielle Nybegynder
16. juli 2005 - 18:01 #11
Grunden til at jeg ikke tager udgangspunkt i din eksisterende kode er at man så har meget svære ved at se hvad der er den centrale løsning. Den drukner simpelthen i alt anden kode. Når man først far forstået principperne i løsninger skulle det efterfølgende være simpelt at tilpasse den til det konkrete tilfælde.
Avatar billede aerobee Nybegynder
16. juli 2005 - 18:04 #12
Prøver.. Er ikke stærk i JavaScript, men jeg prøver ;)
Avatar billede aerobee Nybegynder
16. juli 2005 - 18:28 #13
Nu har jeg prøvet at integrere det i min egen kode (ovenstående) og jeg kan bare ikke få det til at virke??? Squ svært det her :(
Avatar billede aerobee Nybegynder
16. juli 2005 - 18:29 #14
Jeg bruger det jo i en tabel.. Har det noget at sige?
Avatar billede nielle Nybegynder
16. juli 2005 - 18:42 #15
Kan være. Sagen er den at koden bruger parentNode, firstChild og firstChild til at navigere rundt i DOM'en og hvis du ligger soan'erne ind i tabeller og på anden måde strukturere anderledes så er tingene jo skruet sammen på en anden måde end det scriptene forventer.
Avatar billede aerobee Nybegynder
16. juli 2005 - 18:49 #16
Det er vel ikke sådan at du har en 5-10 minutter i overskud og gider prøve at integrere det i ovenstående kode? (koden der står i spørgsmålet)

For jeg har prøvet det mange gange nu, og jeg kan ikke få det til at virke, men kan godt se at det virker inden jeg prøver at integrere det.
Avatar billede nielle Nybegynder
16. juli 2005 - 19:03 #17
Den kode du har postet er ikke komplet nok. Du mangler stort set alle de punkter som skal kunne slettes.
Avatar billede aerobee Nybegynder
16. juli 2005 - 19:14 #18
Hvad mener du?
Alt det der skal slettes er i den kode jeg har postet..

Det er jo fra et database udtræk hvor f.eks tab(i,4) indeholder emnet.
tab(i,4) er det samme som <%=rs("emne")%> :)

Emnet og dato/tid er jo aldrig det samme eftersom der kommer nye mails hele tiden.
Avatar billede nielle Nybegynder
16. juli 2005 - 19:20 #19
Du mangler jp f.eks. den checkboks man kan krydse af hvis man vil slette alt sammen.
Avatar billede aerobee Nybegynder
16. juli 2005 - 19:21 #20
ahh sorry ;) Kommer her
Avatar billede aerobee Nybegynder
16. juli 2005 - 19:23 #21
<td width="20"></td><td width="120">Modtaget</td><td width="75">Afsender</td><td width="5"></td><td width="250">Emne</td><td width="50" align="right"><span id="alle">Slet </span><input type="checkbox" onclick="selectAll(this)"></td></tr>
<%for i = 1 to rsC("Antal") step 2%>
<tr bgcolor="#D4EBF1" class="font_list">
<td><%if tab(i,6)=0 then%><a href="save.asp?action=laspost&PostID=<%=tab(i,1)%>&AfsenderID=<%=tab(i,5)%>"><img src="images/mail-unread.gif" alt="Du har ikke læst denne mail" border="0"></a><%else%><a href="save.asp?action=laspost&PostID=<%=tab(i,1)%>&AfsenderID=<%=tab(i,5)%>"><img src="images/mail-read.gif" alt="Du har læst denne mail" border="0"></a><%end if%></td><td><%=tab(i,7)%>&nbsp;kl.&nbsp;<%=tab(i,8)%></td><td><a href="members/resultat.asp?MemberID=<%=tab(i,5)%>"><%=left(tab(i,3),10)%></a></td><td></td><td><a href="save.asp?action=laspost&PostID=<%=tab(i,1)%>&AfsenderID=<%=tab(i,5)%>"><%=tab(i,4)%></a></td><td align="right"><input type="checkbox" value="<%=tab(i,1)%>" name="delmail" onclick="markDelete(this)"></td></tr>
Avatar billede aerobee Nybegynder
16. juli 2005 - 19:23 #22
Wooohaaaa.. Det ser uoverskueligt ud.. :S

Håber du kan finde hovede og hale i det hele..
Avatar billede nielle Nybegynder
16. juli 2005 - 19:35 #23
Hvis du nu indsatte et par linjeskift en gang i mellem så ville det gøre mirakler for læseligheden! :^|

Jeg kigger på det. :^)
Avatar billede aerobee Nybegynder
16. juli 2005 - 19:38 #24
Der er også sat linje skift der hvor de skulle sættes :)
Satte ikke yderligere for ikke at skabe misforståelser :)
Avatar billede nielle Nybegynder
16. juli 2005 - 20:45 #25
Sådan:

<table border="1">
<tr>
<!--- Din kode begynder -->


<td width="20"></td>
<td width="120">Modtaget</td>
<td width="75">Afsender</td>
<td width="5"></td>
<td width="250">Emne</td>
<td width="50" align="right">
Slet <input type="checkbox" onclick="toggleAllMails(this)"></td>
</tr>

<% for i = 1 to rsC("Antal") step 2 %>
<tr bgcolor="#D4EBF1" class="font_list" id="NDAA">
<td>
<% if tab(i,6)=0 then %>
<a href="save.asp?action=laspost&PostID=<% =tab(i,1) %>&AfsenderID=<% =tab(i,5) %>"><img src="images/mail-unread.gif" alt="Du har ikke læst denne

mail" border="0"></a>
<% else %>
<a href="save.asp?action=laspost&PostID=<% =tab(i,1) %>&AfsenderID=<% =tab(i,5) %>"><img src="images/mail-read.gif" alt="Du har læst denne mail"

border="0"></a>
<% end if %>
</td>
<td><span name="delete">XXX<% =tab(i,7) %></span>&nbsp;kl.&nbsp;<span name="delete">XXX<% =tab(i,8) %></span></td>
<td><a href="members/resultat.asp?MemberID=<% =tab(i,5) %>"><% =left(tab(i,3),10) %></a></td>
<td></td>
<td><span name="delete">XXX<a href="save.asp?action=laspost&PostID=<% =tab(i,1) %>&AfsenderID=<% =tab(i,5) %>"><% =tab(i,4) %></a></span></td>
<td align="right">XXX <input type="checkbox" value="<% =tab(i,1) %>" name="delmail" onclick="toggleMail(this)"></td>
</tr>


<!--- Din kode slutter -->
<table>
Avatar billede nielle Nybegynder
16. juli 2005 - 20:46 #26
Se hvor meget letter det bliver at læse!

... og så de tilhørende java script:

<script type="text/javascript">
function toggleAllMails(elm)
{
    var currNode1;
    var currNode2;
    var currNode3;

    for (currNode1=elm.parentNode.parentNode; currNode1!=null; currNode1=currNode1.nextSibling)   
    {
        currNode2 = currNode1.lastChild;
        if (currNode2 != null)
        {
            for (currNode3=currNode2.firstChild; currNode3!=null; currNode3=currNode3.nextSibling)   
            {
                if (currNode3.name == "delmail")
                {
                    currNode3.checked = ! currNode3.checked;
                    toggleMail(currNode3);
                }
            }
        }
    }
}

function toggleMail(elm)
{
    var currNode1;
    var currNode2;

    for (currNode1=elm.parentNode.parentNode.firstChild; currNode1!=null; currNode1=currNode1.nextSibling)
    {
        for (currNode2=currNode1.firstChild; currNode2!=null; currNode2=currNode2.nextSibling)
        {
            if (currNode2.style != null && currNode2.name == "delete")
            {
                currNode2.style.color = (elm.checked) ? "red" : "black";
                currNode2.style.textDecoration = (elm.checked) ? "line-through" : "";
            }
        }
    }
}
</script>
Avatar billede aerobee Nybegynder
16. juli 2005 - 22:53 #27
Hej Nielle.

Sorry for det lidt sene svar.. Har netop testet det og det virker jo..
Dog er der en lille bug :(

<span name="delete">XXX<a href="save.asp?action=laspost&PostID=<% =tab(i,1) %>&AfsenderID=<% =tab(i,5) %>"><% =tab(i,4) %></a></span>

Den virker ikke. Kun XXX bliver striket. <% =tab(i,4) %> bliver ikke.
Prøvede at flyttet på span tagget så det kun omsluttede <% =tab(i,4) %>
men det virkede slet ikke, gjorde kun tingene værre.

Så hvordan kan jeg ændre den bug? Er det noget i JavaScripten der skal ændres eller ?
Avatar billede aerobee Nybegynder
16. juli 2005 - 22:57 #28
Tror det skyldes fordi der er en <a href""> imellem?
Måske det der ødelægger det.. For XXX bliver jo markeret som er uden for
<a href""> tagget...

Selvom man omslutter span tagget omkring tab4 only burde linket vel stadig virke?
Avatar billede nielle Nybegynder
16. juli 2005 - 23:13 #29
Prøv at rette hele den linje til:

<td><a name="delete" href="save.asp?action=laspost&PostID=<% =tab(i,1) %>&AfsenderID=<% =tab(i,5) %>"><% =tab(i,4) %></a></td>
Avatar billede nielle Nybegynder
16. juli 2005 - 23:17 #30
Altså - fjern span'en og flyt name="delete" over på selve href'en. Det ser ud til at birke korrekt her hos mig.

... og så et svar fordi jeg skal i seng nu. :^)

(men kun i tilfæle af at det nu virker hos dig - ellers tager vi den i morgen)
Avatar billede aerobee Nybegynder
16. juli 2005 - 23:28 #31
Så virker det helt som det skal...

Tusinde tak for hjælpen nielle, du har bestemt fortjent hver eneste point med din tålmodighed og forståelse.
Avatar billede nielle Nybegynder
17. juli 2005 - 07:42 #32
:^)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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