Avatar billede jens_k Nybegynder
24. juni 2003 - 23:10 Der er 22 kommentarer og
1 løsning

Når flere <tr> har samme ID

Hej

Jeg har et stykke kode :

<Script language="JavaScript">
function Hide() {
test.style.display = "none";
}

function Show() {
test.style.display = "block";
}
</Script>
<body onLoad="Hide()">

<table width="200">
    <tr id="test" style="display: none">
      <td>Test</td>
    </tr>
    <tr id="test" style="display: none">
      <td>Test2</td>
    </tr>
    <tr id="test3" style="display: none">
      <td>Test</td>
    </tr>
</table>

<p><a onClick="Show()">Vis</a></p>

</body>


************************

Som i kan se, så har alle <TR>´s samme ID, nemlig "test".

Hvis der kun er en af dem som hedder test, så virker mine funktioner fint. Men jeg skal have dem allesammen ind under samme navn. Så når jeg trykker "vis", så viser den alle dem som har ID "Test". Hvordan får jeg det til at virke ?

Jens K
Avatar billede htm Nybegynder
24. juni 2003 - 23:15 #1
Omkrans tabellen af et div-tag og giv det id'et test - og slet dem du har på dine tr!
Avatar billede jens_k Nybegynder
24. juni 2003 - 23:16 #2
Ja det vidste jeg så godt. Men jeg skal bruge det på mine TR´s.
Avatar billede htm Nybegynder
24. juni 2003 - 23:18 #3
Så må du give dem et unikt navn hver og tilføje nogle linier i din show-funktion.

eks.

function Show() {
test.style.display = "block";
test2.style.display = "block";
}
Avatar billede jens_k Nybegynder
24. juni 2003 - 23:21 #4
Det kan ikke passe man ikke kan lave noget, så de kan hedde det samme..
Avatar billede roenving Novice
24. juni 2003 - 23:39 #5
Sæt en css-class på og lav ændringen på class'en ...

Det er lidt besværligt (og ikke den effektiveste måde) men kan sagtens lade sig gøre !-)

Lidt smartere ville jeg navngive mine elementer test0, test1 osv. og så:

<Script language="JavaScript">
numTest = 2;
function Hide() {
  for(i=0;numTest>i;i++){
    document.getElementById('test'+i).style.display = "none";
  }
}

function Show() {
  for(i=0;numTest>i;i++){
    document.getElementById('test'+i).style.display = "none";
  }
}
</Script>

hth
jes
Avatar billede jens_k Nybegynder
24. juni 2003 - 23:50 #6
roenving, dit eksempel virker fint, men som jeg skrev, så har jeg flere der SKAL have det samme ID..
Avatar billede roenving Novice
24. juni 2003 - 23:56 #7
Hvorfor ?

-- men jeg prøver lige at finde eksemplet med class
Avatar billede roenving Novice
25. juni 2003 - 00:06 #8
Kunne ikke lige finde det, men kom så til at tænke på, at vi kunne jo gå en anden vej:

<Script language="JavaScript">
function Hide() {
  var rows = document.getElementsByTagName("TR");
  for(i=0;rows.length>i;i++){
    if(rows[i].id=="test"){
      rows[i].style.display = "none";
    }
  }
}

function Show() {
  var rows = document.getElementsByTagName("TR");
  for(i=0;rows.length>i;i++){
    if(rows[i].id=="test"){
      rows[i].style.display = "block";
    }
  }
}
</Script>
Avatar billede dreamcode Nybegynder
25. juni 2003 - 01:03 #9
Her er det dynamisk stylesheet eksempel:

<style id="dynamicStyle" type="text/css">
.ulige {
    display: block;
}
.lige {
    display: none;
}
</style>

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function toggleRows(){
    var sheet = document.styleSheets['dynamicStyle'];
    if (sheet.rules[0].style['display'] == 'none'){
        sheet.rules[0].style['display'] = 'block';
        sheet.rules[1].style['display'] = 'none';
    } else {
        sheet.rules[1].style['display'] = 'block';
        sheet.rules[0].style['display'] = 'none';
    }

}
//-->
</SCRIPT>

<table border=1>
<tr class="ulige"><td>række 1 kolonne 1</td><td>række 1 kolonne 2</td></tr>
<tr class="lige"><td>række 2 kolonne 1</td><td>række 2 kolonne 2</td></tr>
<tr class="ulige"><td>række 3 kolonne 1</td><td>række 3 kolonne 2</td></tr>
<tr class="lige"><td>række 4 kolonne 1</td><td>række 4 kolonne 2</td></tr>
</tr>
</table>
<input type="button" onclick="toggleRows();" value="Skift Rækker">


Håber det hjælper dig

-DC
Avatar billede iver25 Nybegynder
25. juni 2003 - 08:14 #10
du kan sagtens give dine tr tags samme id. Så sker der det at "test" bliver til en collection med alle tr tags i et array.

Kald alle dine tr tags for test, og gør sådan her:

<Script language="JavaScript">
function Hide() {
  for (var i=0; i<test.length; i++) {
    test[i].style.display = "none";
  }
}

function Show() {
  for (var i=0; i<test.length; i++) {
    test[i].style.display = "block";
  }
}
</Script>
Avatar billede Slettet bruger
25. juni 2003 - 09:41 #11
http://www.w3.org/TR/REC-html40/struct/global.html#h-7.5.2

"[The ID] attribute assigns a name to an element. This name must be unique in a document."

Om et par browsergenerationer vil din side forhåbentlig ikke kunne ses, hvis du ikke følger standarderne.
Avatar billede roenving Novice
25. juni 2003 - 12:56 #12
Virker sådan noget med ikke at angive en korrekt reference til elementet også i andre browsere end IE ?-)

-- jeg tænker på at nøjes med at referere til test ...
Avatar billede iver25 Nybegynder
25. juni 2003 - 13:42 #13
Jeg arbejder kun med IE, så jeg kan ikke svare på om det virker i andre browsere, men det virker upåklageligt i IE.
Avatar billede Slettet bruger
26. juni 2003 - 09:41 #14
iver25>> Allerede dér går det galt. "Jeg arbejder kun med IE". Så er du forhåbentlig ikke webdesigner/programmør.
Avatar billede iver25 Nybegynder
26. juni 2003 - 09:47 #15
Jeg udvikler web applikationer som kun bliver afviklet på IE, så hva' er problemet?????

Hvis du er sådan en haj, hvorfor er du så ikke kommet med et brugbart svar på spørgsmålet??????
Avatar billede Slettet bruger
26. juni 2003 - 09:53 #16
Problemet er, at IE igennem en årrække totalt har set bort fra W3C og ECMA's recommendations og dermed gør arbejdet langt sværere for både webdesignere, -programmører og i sidste ende også brugerne.
Til intranets o.l. kan det gå at fokusere udelukkende på én browser, så længe man er bevidst om problemerne.
En udvikler, der kun kender til IE, er som en kok, der ikke kan lave vegetarretter. Langt størstedelen af kunderne vil aldrig støde på nogle problemer, men for vegetarer (læs Netscape/Opera/etc. brugere) er hele oplevelsen ødelagt, og de vender ikke tilbage igen.
Avatar billede Slettet bruger
26. juni 2003 - 09:55 #17
Og der er to grunde til, jeg ikke er kommet med en løsning:

1) jens_k stiller det krav, at man omgår standarderne, hvilket i 99% af tilfældende er selvdestruktivt.
2) roenving har allerede postet et ganske velfungerende svar, som bare kræver, at jens_k tilpasser sig løsningen en smule, frem for at forvente at løsningen tilpasser sig ham.
Avatar billede iver25 Nybegynder
26. juni 2003 - 10:00 #18
Jeg kan godt se behovet for at kende andre browsere når man udvikler til internettet. Men i mit nuværende job er det 100% sikkert at jeg kun skal udvikle til IE, så derfor bryder jeg ikke min hjerne med hvad Netscape mm kan og ikke kan. Så kan du måske sige at jeg ikke interesserer mig nok for stoffet, og det er måske rigtigt nok. Men som forholdsvis nyansat har man nok at gøre med at lære det der er relevant.
Avatar billede Slettet bruger
26. juni 2003 - 10:05 #19
Jeg anklager dig ikke for noget som helst, så længe du kender dine begrænsninger. Men jeg vil stærkt anbefale dig at udvide dine horisonter; også selvom du langt ud i fremtiden kun skal udvikle til IE. Du vil opdage, at man lærer meget om en browser ved at studere en anden.
Avatar billede jens_k Nybegynder
26. juni 2003 - 16:56 #20
En lille diskution er altid en god ting :D

Jeg kan sige at jeg har lavet det sådan, at der IKKE er flere som har samme ID. Og har fået det til at virke ved at ændre lidt i roenvig´s kommentar.

Så vil du være så venlig at lave et svar roenvig :D

Og mange tak for dine kommentar phoenixv, det er altid rart at lave tingene ordenligt.

mvh

Jens K
Avatar billede roenving Novice
26. juni 2003 - 16:59 #21
Ja, det er rart at udvide sine horisonter -- og det plejer at være sjovest via en diskussion ,-)

Bueno '-)
Avatar billede roenving Novice
26. juni 2003 - 17:30 #22
-- og tak for points ;~}
Avatar billede jens_k Nybegynder
26. juni 2003 - 17:31 #23
Mig der takker :)

Jens K
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