Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 19:37 Der er 23 kommentarer og
2 løsninger

"include" noget i et div

Hej Eksperter,

Jeg har skruet et fanebladssystem sammen. Jeg vil gerne have nogle forskellige ting vist. Kan jeg med JS, om man så må sige, include noget html? Det jeg mener er hvis jeg nu har

<div id="tcontent" class="tcontent"></div>

som er det område hvor tingene skal vises, kan jeg så henvise til et sted hvor koden skal hentes
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 19:37 #1
function vaelgtap(id)
{
    var objs = document.getElementsByTagName('div');
   
      for(var i=0;i<objs.length;i++){
          if(objs[i].id.indexOf('tap')==0)
        objs[i].className = 'taps';
        }
document.getElementById(id).className='tapvaelgt';
}
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 19:39 #2
Jeg ved jo hvad id er, så det kan jeg teste på. Det jeg gerne vil have er, hvis nu id et 1 så vis det her i tcontent, o.s.v
Avatar billede w13 Novice
01. januar 2008 - 19:49 #3
Du skal ud i noget AJAX, som er en JavaScript-teknik, men det bli'r let en avanceret affære.

Med AJAX er det muligt at køre en anden side i hukommelsen og hente dens indhold ind i en variable.
Avatar billede keysersoze Ekspert
01. januar 2008 - 19:50 #4
Der findes flere måder at gøre det på - hver har sine fordele/ulempler.

Hvis det for søgemaskiner er vigtige data kunne man måske overveje flere divs og så køre show/hide imellem dem - ulempen er selvfølgelig loadetid.

Den pæne løsning hedder AJAX (se fx http://activedeveloper.dk/articles/412/) - fordelen er at du kun skal hente hvad der er nødvendigt men ulempen er fx at søgemaskiner ikke kan tolke det.
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:01 #5
Jeg er vild med ajax
Avatar billede w13 Novice
01. januar 2008 - 20:03 #6
Ja men så er det jo løsningen. =) Har du styr på det?
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:04 #7
Skal bare lige fatte hvordan jeg implementerer det
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:05 #8
ikke rigtigt. Har du et eksempel som kan løse mit problem
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:06 #9
lad os sige at min kodestump ligger i /bla/ og jeg gerne vil have den vist i <div id="tcontent" class="tcontent"></div>
Avatar billede w13 Novice
01. januar 2008 - 20:06 #10
Jeg vil hellere gå ud fra dit Ajax, hvis du da allerede har noget.
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:10 #11
Jeg har brugt det, men i en anden sammenhæng
Avatar billede w13 Novice
01. januar 2008 - 20:11 #12
Ok, så copy+paste lige Ajax-koden her.
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:25 #13
if(xmlHttp.readyState==4)
        {
        xmlHttp.open("POST","../ajax/MINSIDE.html,true);
    xmlHttp.send(null);
}
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:27 #14
jeg vil bare gerne vide hvordan jeg for det fra MINSIDE ind i mit div
Avatar billede w13 Novice
01. januar 2008 - 20:32 #15
Hmm.. Jeg gennemskuer ikke lige, hvordan det kan virke, men det burde så være:
-------------------------------------
if(xmlHttp.readyState==4)
        {
        document.getElementById("tcontent").innerHTML=xmlHttp.responseText;
        xmlHttp.open("POST","../ajax/MINSIDE.html,true);
        xmlHttp.send(null);
}
-------------------------------------
Så går vi dog helt uden om, at innerHTML ikke har noget som helst med gyldig HTML at gøre.
Den virker dog i samtlige browsere.
Avatar billede mikmakmuk Nybegynder
01. januar 2008 - 20:35 #16
cool. Jeg må være ærlig og indrømme at jeg først kan teste det af i morgen, men jeg skal nok vende tilbage. Tusinde tak for hjælpen so far :-)
Avatar billede w13 Novice
01. januar 2008 - 20:36 #17
Oki. =)
Avatar billede thesurfer Nybegynder
01. januar 2008 - 23:22 #18
w13> Det der vil da aldrig virke.. :-)

xmlHttp.readyState vil aldrig være "4", med mindre at kaldet bliver afviklet, hvilker sker her:

        xmlHttp.open("POST","../ajax/MINSIDE.html,true);
        xmlHttp.send(null);

Som du sikkert har regnet ud, kan den ikke komme til at afvikle kaldet, fordi den readyState aldrig når "4", da kaldet ikke er blevet afviklet..

Sådan.. :-)
Avatar billede thesurfer Nybegynder
01. januar 2008 - 23:26 #19
Se artiklen på http://activedeveloper.dk/articles/412/ som keysersoze linker til..

Og læs keysersoze's kommentar på siden, som rammer plet (begge punkter, det om XML og innerHTML)..


PS:
xmlHttp.readyState==4 er sandt når dataene kommer tilbage.. sommertider tester man også på om status er "200", hvilket betyder at siden er loadet korrekt (dvs, der er ikke opstået en fejl)..
Avatar billede w13 Novice
02. januar 2008 - 01:10 #20
Thesurfer>> Ja, det var også det jeg mente med, at jeg ikke gennemskuede det. Men det lød som om, ovenstående kode blev brugt og derfor virkede et eller andet sted. I hvert fald skal linjen:
  document.getElementById("tcontent").innerHTML=xmlHttp.responseText;
inkluderes i readystate-if'en. =)
Avatar billede w13 Novice
02. januar 2008 - 01:11 #21
Og der bør også altid testes på xmlHttp.status==200 for en sikkerheds skyld ja.
Avatar billede thesurfer Nybegynder
02. januar 2008 - 19:43 #22
Der er vist noget med, at der er omkring 7 readyState koder, hvor nr 4 er "loadet færdigt".. problemet skulle være, at nogle browsere sommetider ikke opfatter nr 4 som endegyldigt svar, så man skal teste på status==200..

Det har jeg vist læst et eller andet sted.. :-)
Avatar billede w13 Novice
02. januar 2008 - 20:08 #23
Der er 5 (0-4) som indikerer, hvor langt den er: http://msdn2.microsoft.com/en-us/library/ms534360(VS.85).aspx

Men hvis der opstår en fejl på din side, vil den alligevel kunne returnere 4. Derfor bør man lige tjekke på status også, for at sikre sig, at man ikke vil hente fra en side, der kun indeholder teksten "Der er opstået en fejl" eller "Siden kunne ikke vises" o.lign.
Avatar billede thesurfer Nybegynder
02. januar 2008 - 21:35 #24
Dovenskaben længe leve.. ;-)
Avatar billede mikmakmuk Nybegynder
03. januar 2008 - 21:37 #25
I skal have tak for hjælpen. Jeg droppede at bruge ajax og har løst det med noget DOM
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