Avatar billede donslund Nybegynder
13. oktober 2005 - 11:43 Der er 15 kommentarer og
1 løsning

Gennemløbe flere ID's

Jeg har en række <DIV>'s medtabel med forskelligt indhold.
Jeg vil tjekke indholdet og er det lig "ost", så skal div'ens style sættes til Visibility:hidden.

Men hvordan gør jeg det når alle div'er hedder id=vare?
Avatar billede erikjacobsen Ekspert
13. oktober 2005 - 11:49 #1
En given værdi for en id må kun bruges een gang i et dokument. Ellers er det ikke en entydig identifikation. Prøv at lave det om ;)
Avatar billede donslund Nybegynder
13. oktober 2005 - 11:55 #2
Men hvis de nu heder vare1, vare2, vare også videre, kan man så gennemløbe dem?
Avatar billede erikjacobsen Ekspert
13. oktober 2005 - 12:00 #4
Avatar billede horsmark Nybegynder
13. oktober 2005 - 12:03 #5
<html>
<body>

<div id="ost1" name="ost">osr 1</div>
<div id="ost2" name="ost">adsfasdfasdff</div>
<div id="ost3" name="ost">asdf</div>
<div id="ost4" name="ost">asdf</div>
<div id="jyskatomkraft_ost" name="ost_flatrate">flatrate ost</div>
<div id="morfarost" name="ost_dangerous">morfar ost</div>
<div id="ost5" name="ost">asdf</div>

<script type="text/javascript">
var myDivs = document.getElementsByName('ost')
alert(myDivs.length)
for( var i = 0; i < myDivs.length; i++){
  myDivs[i].style.display = "none"
}
</script>

</body>
</html>

så skal du bare ændre
  myDivs[i].style.display = "none"
til
  myDivs[i].style.visibility = "hidden"
Avatar billede donslund Nybegynder
13. oktober 2005 - 13:05 #6
myDivs.length er lig 0.

Men jeg danner div-id med:

<script language="javascript">
alert('<div id="ost' + nummer + '" name="ost">');
nummer++;
alert(nummer);
</script>

og nummer forhøjes fint.
Avatar billede horsmark Nybegynder
13. oktober 2005 - 13:19 #7
øhh skriver du divsne vha javascript eller er de allerede skrevet ud ?
Avatar billede donslund Nybegynder
13. oktober 2005 - 13:22 #8
Indholdet af div'ene kommer fra en database. Jeg sætter div omkring for at kunne skjulæe de ting jeg ikke vil have. Det er i noget CMS, så derfor kan jeg ikke bare lave min søgning i SQl-udtrækket.
Avatar billede olebole Juniormester
13. oktober 2005 - 19:58 #9
<ole>

name er ikke en valid attribut på et div-element, så den kan ikke bruges  :)

donslund >> Jeg forstår ikke problemet. Kan du præcisere lidt?

/mvh
</bole>
Avatar billede thomas_yde Nybegynder
14. oktober 2005 - 13:45 #10
Du kan også løbe alle dine Div igennem med:
getElementsByTagName('DIV') som erik nævner.
Så får du et array tilbage du kan arbejde med.
Med fx. innerText

<html>
<body>

<script type="text/javascript">
function skjulOst(){
var oste = document.getElementsByTagName("DIV");
for(var i = 0;i<oste.length;i++){
if(oste[i].innerText == "ost"){
    oste[i].innerText += "_skjules";
}
}
}
</script>
<input type="button" onClick="skjulOst();" value="skjul ost">

<div>ost</div>
<div>toast</div>
<div>ost</div>
<div>ostepops</div>
<div>ost</div>
</body>
</html>
Avatar billede roenving Novice
14. oktober 2005 - 14:00 #11
-- men innerText er ikke så crossbrowser ...
Avatar billede thomas_yde Nybegynder
14. oktober 2005 - 14:01 #12
nej du kan bruge innerHTML.
Avatar billede roenving Novice
14. oktober 2005 - 14:09 #13
-- som, på trods af, at det vistnok virker alle vegne, heller ikke findes i nogen standarder ...

-- men hvis det fungerer med den doctype, du bruger, er det vel også ligegyldigt !-)
Avatar billede donslund Nybegynder
17. oktober 2005 - 10:00 #14
Ja, getElementByTagName virker, så det er vel et brugbart svar. Men når databasen på et tidspunkt kommer til at indeholde rigtig mange poster, så er det jo ikke en fornuftig måde at gøre det på alligevel. Jeg er vist nødt til, at finde en løsning der er mere gennemtænkt. En løsning som helst skulle kunne klares gennem SQL'en.

Men der er vel point til Thomas for et brugbart svar.
Avatar billede erikjacobsen Ekspert
17. oktober 2005 - 10:02 #15
"rigtig mange poster" - Det er jo altid begrænset af den mængde HTML du vil vise på en given side, og man serverer ikke 100TB HTML for folk ;)
Avatar billede thomas_yde Nybegynder
17. oktober 2005 - 10:09 #16
Kommer an på hvad du mener med "rigtig mange" :-)
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