Avatar billede krydset Nybegynder
08. september 2004 - 14:37 Der er 14 kommentarer og
1 løsning

Hvis checkbox checked vis en hel <tr>

hejsa.

jeg har prøvet at lave det her
men når man checker i checkbox så vil den ikke vise den <tr> som jeg har givet classname="offer" og det er jo egentlig logis nok da det ikke er et formelement som jeg definere i onclick event´en. kan man definere onclick event´en så det er <tr>´ern den gør synlig når man checker checkbox ??

<tr>
    <td>Tilbud</td>
    <td>Ja <input type="checkbox" onclick="this.form.offer.style.visibility=(this.checked)?'visible':'hidden';" /></td>
</tr>
               
<tr  class="offer" style="visibility:hidden;display:block">
    <td>Tilbuds pris</td>
    <td><input type="text" name="offer_price" class="txt_box"></td>
</tr>

Mvh Thomas L
Avatar billede olebole Juniormester
08. september 2004 - 14:46 #1
<ole>

Ja, men det kræver, du giver TR'en en id:

<script type="text/JavaScript">
var d = document;
function gE(id){return d.getElementById(id)}
</script>

<table cellspacing="0" cellpadding="0" border="0">
<tr>
    <td>Tilbud</td>
    <td>Ja <input type="checkbox" onclick="gE('offer0').style.visibility=(this.checked)?'visible':'hidden';" /></td>
</tr>
               
<tr id="offer0" class="offer" style="visibility:hidden;display:block">
    <td>Tilbuds pris</td>
    <td><input type="text" name="offer_price" class="txt_box"></td>
</tr>
</table>

Bruger du 'visibility' med 'hidden'/'visible', tager rækken plads op i designet. Skifter du derimod mellem 'display' som 'none'/'block' tager den ingen plads op, når den er gemt  ;o)

/mvh
</bole>
Avatar billede krydset Nybegynder
08. september 2004 - 14:53 #2
du er en snuskebasse ;)
Læg et svar hvis du vil ha point :-D
Avatar billede olebole Juniormester
08. september 2004 - 14:57 #3
Ordet 'snuskebasse' er jo næsten det hele værd ... men pyt ... du får lige et svar  ;D
Avatar billede krydset Nybegynder
08. september 2004 - 15:18 #4
Hov lige et spm til Prøvede lige at lave det her

<script type="text/JavaScript">
var d = document;
function gE(id){return d.getElementById(id)}
</script>



<tr>
                <td colspan="2" align="center">Er der mængderabat ?
                Ja <input type="checkbox" onclick="gE('offer1').style.display=(this.checked)?'block':'none';" /></td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 10 stk.</td>
                <td><input type="text" name="10%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 20 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 30 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 40 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 50 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 60 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 70 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 80 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 90 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 100 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>


Men jeg er ikke så heldig det virker det er kun den første der bliver vist når jeg trykker checker i checkbox:-O

Kan man ikke gøre det som jeg har gjordt `?
Avatar billede roenving Novice
08. september 2004 - 15:23 #5
Nej !-)

For et id _skal_ være unikt, så hvis du vil vise flere, må du gennemløbe dem alle, og sætte den nye property på hver enkelt ...
Avatar billede olebole Juniormester
08. september 2004 - 15:25 #6
"Den, der staver 'd' i 'gjort', skal ha' sin hale smurt!". Nå, det er et andet sprog, det handler om  ;o)

Nej, et id er en unik property. Den må ikke være ens på to elementer. Er det alle TR'er i hele tabellen, der skal vises på én gang?
Avatar billede krydset Nybegynder
08. september 2004 - 15:25 #7
Det lyder som en svær process kan du hjælpe med det ? du skal nok få flere point hvis du vil ?
Avatar billede krydset Nybegynder
08. september 2004 - 15:27 #8
Ja på det du lige har fået er det. men det sidder sammen med det andet som du hjalp med
Avatar billede krydset Nybegynder
08. september 2004 - 15:40 #9
Nogen der kan hjælpe ?
Avatar billede olebole Juniormester
08. september 2004 - 15:46 #10
Det er ikke til at sige med sikkerhed, hvordan det skal laves ... det kommer anpå hele koden. Du kan dog løse det seneste problem med:

<script type="text/JavaScript">
var opened = false;
function bla(elm) {
    var tbl, trs;
    while ( elm.tagName != "TABLE" ) {
        elm=elm.parentNode
    }
    trs = elm.getElementsByTagName("TR")
    for (i=0; i<trs.length; i++) {
        trs[i].style.display = (opened && trs[i].id!="clickRow")? "none": "block";
    }
    opened = !opened
}
</script>

<table cellspacing="0" cellpadding="0" border="0">
            <tr id="clickRow">
            <td colspan="2" align="center">Er der mængderabat ?
                Ja <input type="checkbox" onclick="bla(this)" /></td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 10 stk.</td>
                <td><input type="text" name="10%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 20 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 30 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 40 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 50 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 60 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 70 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 80 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 90 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
           
            <tr id="offer1" style="visibility:visible;display:none">
                <td valign="top">Ved køb af over 100 stk.</td>
                <td><input type="text" name="20%" class="txt_box"> %</td>
            </tr>
</table>

... bortset fra, at alle ens id'er skal laves om - men dem bruger vi ikke her  :)
Avatar billede roenving Novice
08. september 2004 - 15:48 #11
-- og jeg ville vælge den modsatte tilgangsvinkel, hvor man mærkede dem, man ville vise/skjule, fordi den har en større fleksibilitet, men hvis det alligevel er det eneste andet i tabellen, har det ingen betydning !-)
Avatar billede olebole Juniormester
08. september 2004 - 15:50 #12
yups ... derfor min første linie i seneste kommentar  ;o)
Avatar billede krydset Nybegynder
08. september 2004 - 18:21 #13
Jeg klarer mig med det her indtil videre.

Men jeg syns snart det er på tide jeg må få lært det her javascript.

Kan i anbefale noget læsestof omkrinj js ??

Og takker mange gange her er point :-D
Avatar billede olebole Juniormester
08. september 2004 - 20:39 #14
Jeg kan faktisk anbefale Eksperten. Find et par brugere, du har tiltro til indenfor JS. Gå til deres bruger-profil og list de spm, de har besvaret. Her ligger sikkert bunker af brugbar viden og eksempler. Det var en måde, jeg selv lærte en masse, da jeg i sin tid 'ramte Eksperten'  :)

Af bøger kan specielt anbefale O'Reilly's "java script: The Definitive Guide" ... også kaldet "The Rhino-Book", da den har et tegnet næsehorn på forsiden (O'Reilly udgiver bunker af programmerings litteratur og de sætter som regel et dyr på forsiden af bøgerne). Det er ikke en 'kogebog', men en decideret reference - og så er det et 7-800 siders svin til lidt på den grimme side af 500 kr (så vidt jeg husker). Den er fantastisk god.
Kogebøger kender jeg ikke rigtig noget til.

Derudover nogle gode links (så må du selv finde ud af, om de skal koges eller steges):
java script:
http://devedge.netscape.com/library/manuals/
JScript (MS' version af JavaScript):
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jslrfJScriptLanguageReference.asp
MS' DHTML-reference:
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp
Avatar billede olebole Juniormester
08. september 2004 - 20:46 #15
Klik det sidste link - gå til 'Properties' -> 'parentElement'. Her ser du, der et stykke nede står:

Standards Information
There is no public standard that applies to this property.

Det betyder, denne property formodentlig kun virker i IE. Visse metoder, events og properties existerer der ikke en standard for - men de virker alligevel cross-browser. Umiddelbart kan jeg lige komme i tanker om 'innerHTML' ... men der er sikkert flere  :)

Nå, så går du til 'Properties' -> 'parentNode'. Her står:

Standards Information
This property is defined in World Wide Web Consortium (W3C) Document Object Model (DOM) Level 1 .

... need I say more?  :)
Det er en vigtig ting at huske ved den reference - så er den til gengæld også ret god.
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