JavaScript: createElementNS() functie
21 december 2006 - 00:12   
geplaatst door: marijntje
Hello again,

vandaag eens een JS vraagje. Ik ben bezig om een algemene functie te schrijven voor het creeëren van nieuwe XML nodes in een XML document met JS. Maar, omdat ik mijn XHTML en XML ook als XML serveer moet ik createElementNS("namespace","nodename") gebruiken. Ik zou zeggen bekijk het volgende stukje code:
Code:


var GLOBAL = {

   //private properties

   _ns: undefined,

   //public properties
   
   baseURL: undefined,

   //private methods

   _getNS: function(){
       if(document.getElementById){
           this._ns = document.getElementsByTagName("html")[0].getAttribute("xmlns");
           return;
       }else{
           return false;
       }
   },

   _getBaseURL: function(){
       if(document.getElementById){
           this.baseURL = document.getElementsByTagName("base")[0].getAttribute("href");
       }else{
           //add method for non compatible browsers
       }
   },

   //public methods

   createNode: function(nn, att, el){
       if(document.getElementById){
           if(!this._ns){
               GLOBAL._getNS();
           }
           var _b = document.getElementsByTagName('body')[0];
           var _e = document.createElementNS(this._ns,nn);
           for(var i in att){
               _e.setAttribute(i, att[i]);
           }
           _b.appendChild(_e);
       }
   }

};

//create some link
var attributes = {href: "/ergens/", id: "someURL"};
GLOBAL.createNode("a", attributes, "body");


Echter krijg ik de volgende error:

_b has no properties

Volgens mij ben ik wederom zo blind dat ik weer zwaar ergens overheen kijk want volgens mij zou het zo gewoon moeten werken..

Thanx in advance

Marijn

(Bewerkt door marijntje om 0:12, 21-12-2006)

(Bewerkt door marijntje om 10:14, 21-12-2006)

(Bewerkt door marijntje om 10:16, 21-12-2006)

(...)
JavaScript: createElementNS() functie
22 december 2006 - 15:39    reactie #1
geplaatst door: marijntje
Ik weet dat het niet echt netjes is te reageren op je eigen draadje om aandacht te krijgen :music:

maar ik zit echt onwijs in de shit met dit probleem...

iemand?

Marijntje

(...)
JavaScript: createElementNS() functie
28 december 2006 - 03:22    reactie #2
geplaatst door: Kaydie

Citaat
_b has no properties

Logisch, dat komt omdat element body nog niet geladen is (en dus nog niet bestaat) als je het aanroept.

//create some link
var attributes = {href: "/ergens/", id: "someURL"};
GLOBAL.createNode("a", attributes, "body");

Deze code dus triggeren in een load event van het window object :wink:

(Bewerkt door Kaydie om 3:25, 28-12-2006)

"…It sure is great to get out of that bag!" -- mac, 1984
--
kaydies
JavaScript: createElementNS() functie
28 december 2006 - 10:43    reactie #3
geplaatst door: Kaydie
Nog een tipje:
Je wilt in je javascript refereren aan een xml namespace. Dan moet je dat niet alleen bij je elementen, maar ook bij attributen doen:

element.setAttributeNS(namespace, name, value)

(Bewerkt door Kaydie om 10:44, 28-12-2006)

"…It sure is great to get out of that bag!" -- mac, 1984
--
kaydies
JavaScript: createElementNS() functie
28 december 2006 - 12:14    reactie #4
geplaatst door: marijntje
Thanx, ben inmiddels al weer een stukje verder.

Marijnjte

(...)