[Javascript] document.CreateAttribute lukt niet.

Pagina: 1
Acties:
  • 149 views sinds 30-01-2008
  • Reageer

  • Entity_Razer
  • Registratie: Januari 2004
  • Laatst online: 05-03-2025
Hallo,

ik ben bezig aan een site die XML gebruikt als een DB voor al zijn content uit op te halen en zit met een paar problemen.

Ik heb gisteren ook al hulp gevraagd omtrent parse problemen en iemand heeft me toen enorm goed geholpen maar toen ik vandaag wat uitbreidingen wou maken liep het echter mis.

bij het parsen wordt een Div aangemaakt waar de geparse info in komt met de volgende regel code:

JavaScript:
1
2
  
 var res=document.createElement('div');


nu werkt dit, maar ik kan aan de DIV geen css opmaak of dergelijke meegeven,wat een probleem is omdat van zodra er teveel content in komt, dan wordt de div te groot. dus ik wou hier een ID/naam ana geven zodat ik in CSS de opmaak kon doen

dit probeerde ik met:

JavaScript:
1
res=document.createAttribute('txtMain2');


helaas lukte dit ook niet/fouten

Nu heb ik ook geprobeerd opmaak toe te passen door in de XML code met [ ] tags te werken en deze nadient e vervangen.

bv ind e XMl code staat [it] test [/it] en deze worden dan normaal vervangen door <span id="it"> en </span> respectievelijk.

maar dit lukt niet. Ik krijg allemaal <<<<<<span>>><r>>>><<<<< op men pagina zoals u op de links zal kunnen zien.

Dus nu zoek ik hulp bij:

-Het toewijzen van een ID aan de div in questie zodat ik een opmaak kan maken. met dank aan Hacku
-hulp bij het replacen van de [ ] codes zodat deze eigenlijk werken want op het moment werkt dit dus niet.
-UPDATE:
Zelfs zonder [it] of [ul] tags in de XML code te zetten geeft de site nogaltijd van die <<<<<<span>>>>>>>[<<<<<<<<< dingen :s

UPDATE2:
Ben van [ code ] achtige toestanden overgeschakelt op woord commando's :
zetroodnu wordt dan vervangen door <span id="rood"> probleem:
Dit wordt zo letterlijk in de div gezet en dus niet door de HTML parser zelf geparsed. met andere woorden op je scherm staat:
<span id="rood"> test </rood>


je kan alle files vinden hier:
http://www.entity-project.be/fest/index.htm (de HTM pagina)
http://www.entity-project.be/fest/parse_crossbrowser.js (de XML parser)
http://www.entity-project.be/fest/home.xml (de XML file)

Kunnen jullie mij AUB helpen. Ik ben echt einde raad :s ben al een hele dag aan het zoeken naar een oplossing voor deze problemen en raak er maar niet aan uit.

Alvast bedankt voor enige hulp die jullie kunnen geven.

[ Voor 10% gewijzigd door Entity_Razer op 13-08-2006 15:28 ]

The Idea is not to arrive at the grave, safely in a well preserved body, but to slide in sideways at 400 miles an hour screaming of pure joy


  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
JavaScript:
1
2
3
var res = document.createElement('div');
res.id = 'divje';
res.className = 'txtMain2';

March of the Eagles


  • Entity_Razer
  • Registratie: Januari 2004
  • Laatst online: 05-03-2025
Hacku schreef op zondag 13 augustus 2006 @ 15:14:
JavaScript:
1
2
3
var res = document.createElement('div');
res.id = 'divje';
res.className = 'txtMain2';
WOW alvast ENORM bedankt je hebt mij al een hele stap vooruit geholpen :D

The Idea is not to arrive at the grave, safely in a well preserved body, but to slide in sideways at 400 miles an hour screaming of pure joy


Verwijderd

Hacku schreef op zondag 13 augustus 2006 @ 15:14:
JavaScript:
1
2
3
var res = document.createElement('div');
res.id = 'divje';
res.className = 'txtMain2';
en voor andere attributes dan classname
JavaScript:
1
2
var res = document.createElement('div');
res.setAttribute('attribuutnaam','waarde');

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Verwijderd schreef op zondag 13 augustus 2006 @ 15:18:
[...]

en voor andere attributes dan classname
JavaScript:
1
2
var res = document.createElement('div');
res.setAttribute('attribuutnaam','waarde');
Je kan ook gewoon andere attributen op die eerste manier meegeven hoor ;)
Note dat IE5 en IE Mac setAttribute niet ondersteunen.

March of the Eagles


  • Entity_Razer
  • Registratie: Januari 2004
  • Laatst online: 05-03-2025
Ik denk dat ik voor de Spans zal moeten werken met

document.createElement('span') en wederom handmatig de Id's zetten.

hoe zou ik dit dan best doen?
Ik dacht gewoon in XML nog tags bijvoegen dus:

<content> test test <rood>test</rood> en met de parsing deze in een span object te laten zetten maar "probleem" is. als ik dit doe dan gaat de volgorde toch helemaal uit de XML uit zijn?

Ja kan dit doen als je voor een tabel of dergelijke bezig bent met volgende code:

JavaScript:
1
2
3
4
5
6
7
8
9
10
var ul = document.createElement("ul");
    var arrBeschrijving = oDomDoc.getElementsByTagName("beschrijving");
    for (var i = 0; i < arrBeschrijving.length; i++)
    {
    var li = document.createElement("li")
    var liTekst = document.createTextNode(arrBeschrijving(i).lastChild.nodeValue)
    li.appendChild(liTekst);
    ul.appendChild(li);
    }
    document.documentElement.lastChild.appendChild(ul)


maar voor wat ik het nodig heb zou dit toch nooit werken? omdat dan al je <rood>'s bij elkaar staan en al je <content> ook. in 1 vak zou staan.

of ben ik nu mis van denken?

de opmaak van alles in geen echte vereiste, sommige delen zoals een titel kan ik perfect hardcoden in de HTML maar natuurlijk is het beter als ik het in de XML kan zetten.

The Idea is not to arrive at the grave, safely in a well preserved body, but to slide in sideways at 400 miles an hour screaming of pure joy


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12-02 13:44
Ok, die div heeft helemaal geen class o.i.d. nodig. Je kan deze aanspreken met bijvoorbeeld:
Cascading Stylesheet:
1
2
3
div#txtmain div {
  background-color: red;
}


Verder wat betreft je tags. Als je zoiets gebruikt als onderstaand kan je gewoon in je XML iets als: <beschrijving1>dit komt er met <b>AJAX</b></beschrijving1> zetten. Dit is overigens niet geheel correct aangezien er teveel divjes aangemaakt worden enzovoorts maar het is een begin. Ik denk dat een CDATA oplossing o.i.d. misschien wel mooier is.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function importXML(path) {
    if (document.implementation && document.implementation.createDocument) {
        xmlDoc = document.implementation.createDocument("", "", null);
        xmlDoc.onload = handleXML;
    } else if (window.ActiveXObject) {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.onreadystatechange = function () {
            if (xmlDoc.readyState == 4) {
                handleXML();
            }
        };
    } else {
        alert('Your browser can\'t handle this script');
        return;
    }
    xmlDoc.load(path);
}


function onloadHandler() {
    importXML('home.xml');
}

function handleXML() {
    res=handleXMLchildren(xmlDoc.getElementsByTagName('beschrijving1')[0]);
    document.getElementById("txtMain").appendChild(res);
}

function handleXMLchildren(node) {
    var res=document.createElement('div');
    for(var i=0; i<node.childNodes.length; i++) {
        if(/#/g.test(node.childNodes[i].nodeName)) {
            res.appendChild(document.createTextNode(node.childNodes[i].nodeValue));
        }else{
            resNode=document.createElement(node.childNodes[i].nodeName);
            resNode.appendChild(document.createTextNode(node.childNodes[i].nodeValue));
            resNode.appendChild(handleXMLchildren(node.childNodes[i]));
            res.appendChild(resNode);
        }
    }
    return res;
}

window.onload=onloadHandler;

  • Entity_Razer
  • Registratie: Januari 2004
  • Laatst online: 05-03-2025
ik FF krijg in "Node has no properties" als ik jouw code probeer toe te passen. in IE werkt het well (enkel zet hij NULL als eerste woord in het vet) maar in FF doetie niets behalve de volgende fouten:

Node has no properties (slaat op:
JavaScript:
1
    for(var i=0; i<node.childNodes.length; i++) {


Assignment to undeclared viable xmlDoc regel 3
JavaScript:
1
        xmlDoc = document.implementation.createDocument("", "", null);


reference to undefenid property bij:

JavaScript:
1
    var res=handleXMLchildren(xmlDoc.getElementsByTagName('content')[0]);

The Idea is not to arrive at the grave, safely in a well preserved body, but to slide in sideways at 400 miles an hour screaming of pure joy


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12-02 13:44
Dan moet je even debuggen. Ik heb hier het wel werkend namelijk. Heb je wel een recente FF versie?
Pagina: 1