Avatar billede 3xm Nybegynder
08. februar 2006 - 14:15 Der er 31 kommentarer

indsætte kopi af node på side

jeg har noget xml jeg har fået fat i via XMLHttpRequest

lad os sige det ser sådan her ud:


<eksempel>
  <h1>
    dette er en overskrift
  </h1>
</eksempel>


min html ser så fx. sådan her ud:


(...)
  <div id="overskrift">
    et eller andet
  </div>
(...)


hvordan får jeg sat mit <h1>-element fra xml'en ind i html'en?

hvis jeg prøver at bruge appendChild() til at tilføje <h1>-noden i xml'en til overskrift-<div>'en i html'en, så indsætter den bare teksten "dette er en overskrift" - ikke den <h1>-formaterede tekst.


hvis jeg tilføjer den med innerHTML (hvilket vel er noget rod), så skriver den bare "[Object Element]".


det endelige resultat skulle altså gerne være


(...)
  <div id="overskrift">
    <h1>
      dette er en overskrift
    </h1>
  </div>
(...)


Argh! Hjælp, tak.

=)
Avatar billede olebole Juniormester
08. februar 2006 - 14:59 #1
<ole>

var oH = document.createElement("h1");
var oTxt = document.createTextNode("Teksten fra XML'en her");
oH.appendChild(oTxt);
ELEMENT.appendChild(oH);

/mvh
</bole>
Avatar billede 3xm Nybegynder
08. februar 2006 - 15:04 #2
ole, så langt er jeg trods alt med.

problemet er at det ikke kun er et simpelt <h1>-tag jeg vil indsætte. det er en længere sekvens af html (en <form> med dertilhørende <inputs> osv.).

er det ikke muligt at indsætte en nøjagtig kopi? med xslt bruger man til dette formål copy-of i stedet for value-of - er der ikke en lign. ting i javascript?

=)
Avatar billede softspot Forsker
08. februar 2006 - 15:09 #3
Hvordan trækker du XML'en ud af dit httpRequest? Hvis du bruger responseText burde du få den tekstuelle repræsentation af XML'en og så kan du bruge innerHTML...
Avatar billede olebole Juniormester
08. februar 2006 - 15:11 #4
Idéen med HTML- og XML-DOM er, at alt betragtes som noder. Skal der skrives elementer ind i et HTML-dokument, foregår det ved at oprette noderne med DOM. Det er hjertet i AJAX  :)
Avatar billede Slettet bruger
08. februar 2006 - 15:13 #5
Diskussionen må så gå på om det er nødvendigt at løbe alle noder igennem hvis du f.eks. får en 1000 liniers XML-fil tilbage, der i sidste ende bare skal appendes et andet element.

Der ville en simpel JS-påklistring vel være god nok?
Avatar billede olebole Juniormester
08. februar 2006 - 15:17 #6
- 'innerHTML' er en mulighed, men så fjerner man sig fra grundtanken i AJAX ... udover, at det ikke er en standardiseret property og der for ikke bør kunne bruges sammen med XHTML - når det engang bliver en option på WWW.

Når jeg skriver 'bør', er det fordi, Mozilla-folket desværre er begyndt at 'forurene' DOM'en ved at implementere 'innerHTML' i FF's X(HT)ML-DOM. Forhåbentlig holder MS sig fra den slags, når IE engang kommer til at understøtte XHTML - hvilket nok sker i version 8.0  :)
Avatar billede olebole Juniormester
08. februar 2006 - 15:18 #7
el_barto >> Ja, det må være diskutionen - og ja, man skal løbe de 1.000 noder igennem  :)
Avatar billede olebole Juniormester
08. februar 2006 - 15:21 #8
- men det ville nu også være en sær brug af AJAX, hvis der skal hentes 1.000 XML-elementer ad gangen  :)
Avatar billede softspot Forsker
08. februar 2006 - 15:21 #9
Findes cloneNode(true) ikke på responseXML eller responseBody? Så har du vel den struktur som du bare kan indsætte med appendChild... eller har jeg misforstået noget?
Avatar billede olebole Juniormester
08. februar 2006 - 15:23 #10
Jo, men det hjælper ikke noget, hvis det ene dokument er et HTML-doc og det andet er et XML-doc  :)
Avatar billede Slettet bruger
08. februar 2006 - 15:31 #11
softspot> Kan du ikke løfte sløret lidt for hvordan cloneNode() fungerer?

Jeg roder selv lidt med AJAX (kald det hvad du vil) med det ene formål at undgå gentagne indlæsninger af den samme side. Det religiøse og Web 2.0 overlader jeg til andre :)

Men det ville da være lækkert hvis man blot kunne "trække" XML indholdet af en fil over i mit dokument uden at traversere 1000 elementer igennem. Hvorfor ole ikke mener man skal bruge AJAX til et dokument på 1000 linier må han selv svare på ;)
Avatar billede 3xm Nybegynder
08. februar 2006 - 15:34 #12
uha... sikke en masse svar der pludseligt kom.

jeg har fundet en alternativ løsning til min opgave, så det er ikke så helvedes vigtigt længere. men hvis nogen har et svar vil det stadigt være prisværdigt.

jeg prøver lige at kommmentere hvad i har skrevet.


softspot: jeg bruger reponseXML

olebole: men det ER jo allerede en node, eller hvad? hvorfor kan man ikke bare append'e den (og dens undernoder)?

el_barto: præcis. det er det jeg synes der er lidt underligt. der må da være en løsning uden at skulle løbe alt igennem og genskabe en nøjagtig kopi.

olebole: jeg vil også helst gerne undgå innerHTML. sidst jeg brugte den med xhtml i fx virkede det heller ikke. men det er et stykke tid siden, så det kan da godt være de har 'ødelagt' det siden da.

olebole: hvorfor SKAL man det? der er da meningsløst hvis man bare skal bruge en nøjagtig kopi?

olebole: der er højst tale om 20-30 noder, men alligevel...

softspot: cloneNode virker ikke. det er jo bare en nøjagtig kopi af den oprindelige node. den skulle jo gerne konverteres på en eller anden måde til noget der kan indsættes direkte. jeg har rodet lidt med XMLSerializer.serializeToString - det kunne være fint hvis der fandtes noget a la XMLSerializer.serializeToHTML

=)
Avatar billede olebole Juniormester
08. februar 2006 - 15:36 #13
el_barto >> som jeg skrev i (08/02-2006 15:23:21), så kan du ikke bruge 'cloneNode' til det. Så skal du nok prøve at adskille religiøse og praktiske problemer. Det, jeg taler om, er de rent praktiske problemer ... herunder i brugen af innerHTML  :)
Avatar billede olebole Juniormester
08. februar 2006 - 15:39 #14
3xm >> Det ene er en node fra et XML-dokument (en XML-node) - den anden tilhører et HTML-dokument (en HTML-node).

"hvorfor SKAL man det" - fordi sådan er DOM bygget op ... det er hele grundtanken i DOM  :)

"det kunne være fint hvis der fandtes noget a la XMLSerializer.serializeToHTML" - måske, det kunne være fint, men det strider stadig mod grundtanken i DOM
Avatar billede olebole Juniormester
08. februar 2006 - 15:45 #15
- og hvad property'en 'innerHTML' angår, så er det et af de sidste levn, vi har tilbage fra det pløre, der eksisterede i midten af 90'erne, hvor hver browser havde sin proprietære DOM.

Den har altid stredet mod W3C's hensigter om webkodning, hvorfor den aldrig nogensinde har været en del af nogen officiel standard ... den har alle dage været invalid.

Havde den passet ind i W3C's filosofi, havde den forlængst været implementeret i de officielle ECMA-DOM bindings - men det er ikke tilfældet, da den er i 180 graders modstrid med tankerne bag moderne webkodning  :)
Avatar billede 3xm Nybegynder
08. februar 2006 - 15:46 #16
hvorfor strider det mod grundtanken med dom og at man gerne vil merge en xml-node ind i en html-node? html'en er jo sådan set også bare xml, så jeg har svært ved at se hvorfor det skulle være så farligt... enlighten me, please.

=)
Avatar billede olebole Juniormester
08. februar 2006 - 15:54 #17
3xm >> Så roder vi os vist ud i et større grundkursus i DOM - og det vil føre for vidt her. Læs på W3C ... der finder du båder regler for DOM - og baggrund for, hvorfor DOM'en er opbygget, som den er  :)

Derudover kan du ikke umiddelbart klone en node i ét dokument og klistre den ind i et andet dokument. Den node, du kopierer hører til i det dokument, den kommer fra.

En af grundtankerne i AJAX er iøvrigt at spare serverens kræfter. Det gøres ved at lave så små kald som muligt - og kun lade serveren foretage det aller mest nødvendige med de aktuelle data. Således bør al HTML formateres på klienten ... ikke på serveren.
Avatar billede olebole Juniormester
08. februar 2006 - 15:58 #18
- og så er HTML ikke XML. XHTML burde være det, men parses så at sige aldrig som XML idag.
AJAX kan ligeså fint bruges med HTML, som med XHTML ... ligesom AJAX iøvrigt heller ikke nødvendigvis bruger XML til at transportere data  :)
Avatar billede jih Nybegynder
08. februar 2006 - 16:11 #19
hej olebole! du mangler vist lidt points: http://www.eksperten.dk/spm/625534 o.O
Avatar billede jih Nybegynder
08. februar 2006 - 16:11 #20
det var vist denne her.. http://www.eksperten.dk/spm/686408 *ups*
Avatar billede olebole Juniormester
08. februar 2006 - 16:19 #21
- takker  ;o)
Avatar billede 3xm Nybegynder
08. februar 2006 - 16:29 #22
suk.

opgiver at forklare mere.

dem der vil have point kan jo lige smide et svar.

=)
Avatar billede olebole Juniormester
08. februar 2006 - 20:39 #23
Jeg har på fornemmelsen, dine problemer opstår, fordi du bruger AJAX på en måde - eller til noget - som falder udenfor AJAX's styrker  :)

Lad mig lige ridse den typiske anvendelse for AJAX op:
AJAX's helt stor styrke er ved database-opslag. I en traditionel web-applikation, kaldes et ASP- eller PHP-dokument, der igen kalder en DB og formaterer resultatet. Derefter sendes resultatet til brugerens browser, hvor det vises.
Ved brug af AJAX kan man spare på disse fulde sideudskrivninger. Når en side er nede i browseren, kan den ændres ved hjælp af AJAX og DOM - alt efter brugerinput/-forespøgsler.

Serveren kaldes og et helt simpelt recordset sendes til klienten. Her bladres det igennem og der oprettes markup-elementer med de modtagne data og evt. styles og får sat event-handlers, før de indsættes i sidens DOM-træ og derved vises.
Resultatet er, at vi flytter så meget som muligt af det traditionelle serverarbejde væk fra den storsvedende server og ned på klienten, der strutter af ubrugt CPU og RAM.

Der opnåes altså primært følgende fordele ved brug af AJAX (i tilfædig rækkefølge):
1) Serveren aflastes i væsentlig grad
2) Der transporteres færre bytes
3) Brugeroplevelsen bliver bedre, mere flydende og applikationsagtig
4) Endelig er det gamle ønske om en direkte database adgang via JS i en webapplikation næsten opfyldt

Dermed bliver f.eks. script-chats pludselig langt mere realistiske og services som Google Suggest [ http://www.google.com/webhp?complete=1&hl=en ] kommer indenfor rækkevidde med mere end 12 samtidige brugere  :)
En forudsætning for at få fordelene ved AJAX er dog, at man udveksler så få og rå data som muligt mellem server og klient.
Det opnås ikke ved, at man formaterer XML som den færdige markup, lige til klistre ind i dokumentet. Derfor bruges AJAX bedst i kombination med traditionelle sideskift - udfra, hvad der er bedst egnet i den givne situation.

Der er mange fordele ved at bruge DOM fremfor strenge og 'innerHTML' - mere om det til sidst - og det behøver ikke være så besværligt.
Man kan f.eks. oprette et template-element udfra noget bestående HTML og efterfølgende klone dette element - i stedet for at bruge 'createElement' et hav af gange.

Hvis vi f.eks. har et HTML-dokument med en fortegnelse over en skoles klasser:

<a href="#" onclick="showKlasse('1. V')">1. V</a><br>
<a href="#" onclick="showKlasse('1. U')">1. U</a><br>
<a href="#" onclick="showKlasse('2. V')">2. V</a><br>
<a href="#" onclick="showKlasse('2. U')">2. U</a><br>
... osv ...

- så vil 'showKlasse' typisk sende en asynkron XmlHttp forespørgsel til serveren med variablerne (det kan du, så detaljerne er ikke interessante her):
    contxtID = "getKlasse"  // bestemmer, hvad der skal ske på serveren
    klasseID = "2. V"  // sat via argumentet i kaldet til 'showKlasse'

På serveren ses på 'contxtID' og en en passende funktion kaldes - f.eks. via en switch i PHP (eller Select Case i VBS).
I dette tilfælde kaldes en DB med en SQL-streng à la:
    "SELECT `navn`, `sex`, `age` FROM `klasser` WHERE `klasse`='2. V'"

Det resulterende recordset gælder det nu om at få formateret så let som muligt - og så det fylder så lidt som muligt. Det kan gøres på flere måder.
Én måde er en XML-streng, der returneres til klienten som et XML-dokument.
En anden er JSON (JavaScript Object Notation), som jeg selv foretrækker, da det fylder mindre at sende - og efterfølgende er lettere og mere direkte tilgængeligt via JS på klienten.

For bedste performance bør man så vidt muligt ikke bygge strenge i PHP eller VBS/JS og returnere dem. Man bør i stedet anvende tilgængelige server komponenter, der er beregnet til at outputte XML eller JSON. De fungerer ofte hundreder - og til tider tusinder - af gange mere effektivt end den mest effektive, ækvivalente script-kode.

I XML kunne et typisk output se sådan ud:

<?xml version="1.0" encoding="iso-8859-1"?>
<data>
    <contxtID>getKlasse</contxtID>
    <klasseID>2. V</klasseID>
    <rows>
        <elev>
            <navn>Ole</navn>
            <sex>m</sex>
            <age>7</age>
        </elev>
        <elev>
            <navn>Sascha</navn>
            <sex>f</sex>
            <age>7</age>
        </elev>
        <elev>
            <navn>Gaby</navn>
            <sex>f</sex>
            <age>7</age>
        </elev>
    </rows>
</data>

I JSON kunne det se sådan ud (dette er min egen favorit-notation - og faktisk en kombi af XML og JSON. Det kan også gøres i JSON alene):

<?xml version="1.0" encoding="iso-8859-1"?>
<data>
<![CDATA[
{
    contxtID:"getKlasse",
    klasseID:"2. V",
    rows:[
        {navn:"Ole",sex:"m",age:7},
        {navn:"Sascha",sex:"f",age:7},
        {navn:"Gaby",sex:"f",age:7}
    ]
}
]]>
</data>

I XmlHttp-objektets callback-handler spørges på 'contxtID' og værdien afgør, hvad der skal ske med responsen. I et XML-scenarium kunne det se sådan ud
(læg mærke til wrapper-funktionen 'gA', som sparer for en masse kode - og begynd så iøvrigt ved onload-handleren)
- det forudsættes, at 'myCallBack' kaldes, når XmlHttp-objektets 'readyState' er 4 og at objektet selv sendes med som argument:

--------------------------------------------------------------------------------
<script type="text/JScript">
function gA(o,tag){return o.getElementsByTagName(tag)}; // Handy wrapper
// - der returnerer et array af elementer under elementet 'o'

function myCallBack(oXmlHttp) {
    var oDoc, oXml = oXmlHttp.responseXML;
    oDoc = oXml.documentElement;
  // Check for, hvad der skal gøres
    switch ( gA(oDoc, "contxtID")[0].firstChild.nodeValue ) {
        case "getKlasse":
            visKlasse( gA(oDoc, "klasseID")[0].firstChild.nodeValue, gA(oDoc, "rows")[0] );
        break;
    }
}
function visKlasse(sKlasseID, oRowsNode) {
    var aRows, aCells, oTmp, oDispl = document.getElementById("displ");
  // Tøm tbody-elementet, hvis der allerede har været vist en klasse:
    while (oDispl.firstChild) oDispl.removeChild(oDispl.firstChild);
   
  // Find elev-elementerne i XML'en
  // - og gå dem igennem:
    aRows = gA(oRowsNode, "elev");
    for (var i=0; i<aRows.length; i++) {
      // Opret en række udfra vores template:
        oTmp = oTempl.display.cloneNode(true);
      // Find dens celler og fyld data i dem:
        aCells = gA(oTmp, "td");
        sSex = gA(aRows[i], "sex")[0].firstChild.nodeValue;
        sSex = (sSex=="f")? "Pige" : (sSex=="m")? "Dreng" : "?";
        aCells[0].firstChild.nodeValue = gA(aRows[i], "navn")[0].firstChild.nodeValue;
        aCells[1].firstChild.nodeValue = sSex;
        aCells[2].firstChild.nodeValue = gA(aRows[i], "age")[0].firstChild.nodeValue + " år";
      // Føj rækken til tbody-elementet:
        oDispl.appendChild(oTmp);
    }
}

var oTempl = {};
window.onload = function() {
  // Opret de templates, der er brug for i dokumentet
  // - og slet derefter originalerne.
  // Her kloner vi en tabelrække og sletter den.
    var oTr, oDispl = document.getElementById("displ");
    oTr = gA(oDispl, "tr")[0];
    oTempl.display = oTr.cloneNode(true);
    oDispl.removeChild(oTr);

  // Herefter kunne vi oprette flere templates
  // - og klistre dem på 'oTempl' som properties,
  // hvis der var brug for flere i dokumentet.
}
</script>

<table>
<thead>
    <th>Navn</th>
    <th>Køn</th>
    <th>Alder</th>
</thead>
<tbody id="displ">
<tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
</tr>
</tbody>
</table>
--------------------------------------------------------------------------------

Med JSON er det hele lidt simplere. Jeg nøjes med de to berørte funktioner:

function myCallBack(oXmlHttp) {
    var sJson, oJson, oXml = oXmlHttp.responseXML;
  // Find JSON-strengen i XML'en:
    sJson = oXml.documentElement.firstChild.nodeValue;
   
  // Opret et JS-objekt udfra strengen
  // - og læg det i variablen 'oJson':
    eval("oJson = " + sJson);
   
  // Check for, hvad der skal gøres
    switch ( oJson.contxtID ) {
        case "getKlasse":
            visKlasse( oJson.klasseID, oJson.rows );
        break;
    }
}
function visKlasse(sKlasseID, aRows) {
    var aCells, oTmp, oDispl = document.getElementById("displ");
  // Tøm tbody-elementet, hvis der i forvejen har været vist en klasse:
    while (oDispl.firstChild) oDispl.removeChild(oDispl.firstChild);

    for (var i=0; i<aRows.length; i++) {
      // Opret en række udfra vores template:
        oTmp = oTempl.display.cloneNode(true);
      // Find dens celler og fyld data i dem:
        aCells = gA(oTmp, "td");
        sSex = aRows[i].sex;
        sSex = (sSex=="f")? "Pige" : (sSex=="m")? "Dreng" : "?";
        aCells[0].firstChild.nodeValue = aRows[i].navn;
        aCells[1].firstChild.nodeValue = sSex;
        aCells[2].firstChild.nodeValue = aRows[i].age + " år";
      // Føj rækken til tbody-elementet:
        oDispl.appendChild(oTmp);
    }
}
--------------------------------------------------------------------------------

HTML'en, der klones, kan naturligvis være meget mere kompliceret med links, billeder og hvadsomhelst. Så navigerer man blot ned til elementerne og sætter værdier udfra responsen fra serveren.

Hvad angår det at bruge 'innerHTML', skal man tænke på, at noget af dokumentet overskrives - hvorved referencer kan gå tabt. Det sker ikke, når man indsætter, flytter og sletter elementer med DOM.
Det er ikke altid vigtigt, men man skal ikke lave ret komplicerede applikationer (og det kunne AJAX jo ellers godt lægge op til), før det giver seriøse problemer. Prøv f.eks. at indsætte det følgende i et HTML-dokoument og smid det i en browser:

--------------------------------------------------------------------------------
<script type="text/JavaScript">
function foo() {
    alert("Knappen oBtn's ID: " + oBtn.id);
}
function bar() {
    var oDiv, sHtml = "<button>Ny Knap</button>";
    oDiv = document.getElementById("gnu");
    oDiv.innerHTML += sHtml;
}

var oBtn = null;
window.onload = function() {
    oBtn = document.getElementById("hest");
    oBtn.onclick = foo
}
</script>

<div id="gnu" style="padding:20px;border:1px solid red">
    <button id="hest">Kald foo</button>
</div>
Test knappen ovenfor<br>
- og indsæt endnu en knap i divet:<br>
<button onclick="bar()">Indsæt</button><br><br>
Test så igen :o|
--------------------------------------------------------------------------------

Hvad angår JSON, kan du læse mere her:
    http://www.crockford.com/JSON/

- og måske denne også kan være nyttig:
    http://www.eksperten.dk/artikler/227

De kode eksempler, jeg viser ovenfor, fungerer, men de er simplificerede og ikke særlig generiske.
Optimalt bør man skrive et JS-objekt, der kan håndtere requests frem og tilbage, samt evt. et objekt til at holde styr på DOM-templates - og gøre disse lidt mere 'sexy' end den, jeg viste  :)
Avatar billede olebole Juniormester
08. februar 2006 - 20:40 #24
- og så endte det zq med at blive en lille artikel om AJAX  :D
Avatar billede olebole Juniormester
08. februar 2006 - 20:55 #25
PS: Hvis du undrer dig over adresseringen i en linje som:
    ELEMENT.firstChild.nodeValue = "En tekst";

- så skyldes den, at i DOM er alt noder ... også teksten i et element  :)
Avatar billede 3xm Nybegynder
08. februar 2006 - 22:14 #26
ole, med fare for at lyde som et arrogant og utaknemmeligt skarn (hvilket ikke er meningen), så blev jeg ikke rigtigt klogere af din lange kommentar. ved det godt i forvejen. (men opret en artikel med det i stedet? det kan være andre kan bruge det.)

jeg ved godt at det kun er xhtml der er xml. jeg troede det var underforstået. mine sider BLIVER serveret som vaskeægte xhtml med content-type application/xhtml+xml og hele pivetøjet. og min browser (fx) er tilmed også i stand til at forstå det den får smidt i hovedet. jeg tror ovenikøbet det er en af dine artikler der i sin tid forklarede mig hvad der skulle til. så den del af det skulle jeg mene er i orden.

jeg ved godt at alt i dom er noder. men når min side så nu også ER x(ht)ml, så har jeg svært ved at forstå hvad forskellen er på at ville appende en node der er lavet med createElement og en node der kommer fra noget eksternt xml. men det må jeg vel så bare lære at leve med at man ikke kan.

mit problem nu er at jeg enten SKAL kunne sætte noget modtaget xml ind som del af dokumentet, eller alternativt er nødt til at konvertere en del af den ikke-xhtml'ificerede xml (altså ren data-xml - hvilket vel er det optimale) om til tekst, da det er noget håndkodet xml-sjov der skal vises til redigering i et textarea.

jeg er i gang med en løsning a la det sidste, men fandt ud af at XMLSerializer ikke virker i ie. den findes vist slet ikke i den browser. mere om det - og hvordan man får det til at virke alligevel - kan man vist læse her: http://www.mercurytide.com/knowledge/white-papers/issues-working-with-ajax

det ser jeg på i morgen når jeg er tilbage på arbejdet. din ide med at kopiere et eksisterende elememt og bruge det som template er slet ikke tosset.

smider du ikke et svar?

=)
Avatar billede roenving Novice
09. februar 2006 - 01:16 #27
>>3xm

-- du skal lægge _meget_ mærke til den tidligere kommentar om at en klonet node stadig er en egenskab på det dokument, den er klonet fra, hvilket betyder, at den selvfølgelig ikke er til rådighed på et andet dokument ...

-- måske kan du se det, hvis man bruger en sammenligning  à la dette:

-- et overvågningskamera på en lastbil tager et nyt billede hvert 20. sekund og alle billeder gemmes på et lokalt medie (harddisk, usb-stick, whatever !-), men sendes samtidig til et online overvågningscenter (som måske overvåger hundreder af biler !-)

-- hvis ikke billedet gemmes på overvågningscenteret er de gamle billeder altså en del af lastbilens egenskaber og kan på ingen måder ses uden at det fysisk overføres fra lastbilen til centeret ...

-- og uanset hvad du gør (med dagens teknologier, forstås !-) vil en kasse, der er spottet via dette kamera aldrig kunne åbnes og tømmes på overvågningscenteret !o]

Kassen er jo en egenskab ved den lastbil, der har den ombord, og du kan på ingen måde konvertere din viden om den egenskab, hvis ikke du overfører selve kassen, eller bid for bid overfører en viden om egenskaberne om kassens indholds egenskaber ...
Avatar billede roenving Novice
09. februar 2006 - 01:17 #28
Hrm, ikke så vellykket et billede, men studér den, for jeg tror den holder !-)
Avatar billede 3xm Nybegynder
13. august 2006 - 20:53 #29
oprydningstid. jeg har givetvis fundet en løsning på problemet (kan desværre ikke lige huske hvad det skulle bruges til).

dem med trang til point: smid et svar, tak.

=)
Avatar billede olebole Juniormester
14. august 2006 - 13:02 #30
*griiiiiiiiiiiiiiib*  :)
Avatar billede jih Nybegynder
12. juni 2008 - 09:26 #31
lukketid?
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