I try to associate DOM nodes with other objects. Assigning custom
properties to DOM nodes works in Firefox and Safari. It also works with
HTML nodes in IE6. However, it appears not to work with XML nodes that
are part of trees returned by XMLHttpRequest. How can I work around this
limitation? For XML nodes, I need to be able to associate at most one
object with each node.
The syntax I am using is
node.customproperty = value
Say x in a XML Http Request Object ... meaning it's either XMLHttpRequest (firefox) or ActiveXObject (IE)
This line of code works in firefox... x.someProp = "someValue"; alert(x.someProp);
But in IE I get "Object doesn't support this property or method" I need to place a custom property on the object. Is there any way I can do that in IE?
Why are anchor nodes pointing to href and text nodes pointing to [object]? As anchor and text both are objects therefore all outputs from indices 0 to 7 should be [object].
how to add extra properties to html elements as I was storing data in html attributes. After looking at some others code including Raphael and this addEvent code. [URL] They seem to treat objects just like an array. obj[property] = value; This would have been extremely helpful to know previously as I have needed to be able to include variables in property names - but have resorted to making the whole thing a string and calling exec() on it.
I'm trying to iterate through nodes in a Selection Range, but I'm having a bit of trouble determining why all nodes in the range aren't being hit. It seems like deeply nested nodes aren't being hit for some reason.
Here's the code I'm using.
var n = startNode; while (n) { this.visited.push('[' + n.nodeName + ']');
if (n == endNode) { break; }
if (n != startNode && n.hasChildNodes()) { n = n.firstChild; } else { while (!n.nextSibling) { n = n.parentNode; } n = n.nextSibling; } }
There doesn't seem to be any mechanism to "clear" a node of all it's children (not that its necessary very often, but I have come across situations where I'd like to clear a node of all it's children before appending other nodes). I've come up with two possibilities: Code:
I must be missing something very obvious, but my nightly head doesn't work anymore.
Press "Insert" button to add <insnodes after each <br>. Now press "Delete" - only even <insare being removed. ins.length is reported properly, each <inshas "insert" class name. What a...?
I'm sure I'm missing something basic, but I can't seem to find what I'm looking for. If I have an xml doc where the parent node and child nodes contain elements with the same name ("name" in this case), how would I go about just getting the client's name? Here is a slimmed down version of the structure:
function Xml_feed(file) { this.load = function() { var txt, str, title; var threads = xml.getElementsByTagName('thread'); var len = threads.length; var box = document.getElementById('box-a'); while (len-->0) { txt = document.createElement('button'); title = threads[len].getElementsByTagName('title'); str = threads[len].getElementsByTagName('author'); txt.setAttribute('label', title[0].childNodes[0].nodeValue + ' by ' + str[0].childNodes[0].nodeValue); box.appendChild(txt); } };
var xml = document.implementation.createDocument("","",null); xml.onload = this.load; try { xml.load(file); } catch (e) { alert('There was a problem loading the XML file'); } } var feed = new Xml_feed('blah.xml');
in the red:
Is that how I should be retrieving the value from a child node? (the getElementsByTagName)..
in the blue:
I tried doing this.xml but had problems with doing that, i.e, this.xml = document.implementation.createDocument("","",null); this.xml.onload = this.xml.load; try { this.xml.load(file); } catch (e) { alert('There was a problem loading the XML file'); } I'll guess that text in the red is why.. btw, this was in an XUL app.. not sure how much that would matter though..
I have a bunch of numbers on my page, wrapped in a particular HTML element e.g. <h2>5</h2>, <h2>1</h2>, <h2>3</h3>
I am looking for a javascript function that can add these numbers together. The tricky thing is that I do not know how many numbers there might be - anything from 0 to 7.
If necessary, I can give each of the <h2>'s a unique class eg. <h2 class="a">5</h2>, <h2 class="b">1</h2> etc.
I'm having trouble parsing through a table in I.E. Of course it works fine in firefox and chrome. I'm pulling html off of a txt doc and storing it in a temporary div made with createElement so I can go through and parse out the data. Code is below:
[ Code: var tempdiv = document.createElement("div"); //create temporary element to store html content in tempdiv.innerHTML = html; //dump html content into new element
[Code]....
It returns 0 for rows and and cols. If I use a getElementsById and grab a table already on the page it works fine.
And multiple other divs with similar structure, id="2", "3" etc, I want to access the <p> tags to change style-- so that, for example, the last paragraph in all of the divs would change.
To access the last paragraph, I've tried:
Code:
--which generates an error message that the function itself is undefined.
There's till something I'm not understanding about using node-seekers with classes of tags. But if I can get it right, it saves giving each of the <p> tags a class, which would be easier, but code-heavy.
I dymically replace the child nodes of a DIV element by image nodes. In IE and Firefox this works properly. In Safari it works properly, too - but only if the site is called locally, eg. with file://. Uploading to a server and viewing the site in Safari with http:// results in an error.
The problematic code is the following:
var node = document.createElement("img"); node.setAttribute("src", filename); node.setAttribute("style", "position:absolute;left:100px;");// error document.getElementById(name+"Images").appendChild(node);
When executing this script on Safari in online mode (again: with a _local_ file, it works fine!), Safari reports the following error, occuring in the marked line:
"[592] :TypeError - No default value"
Obviously, node.style seems not available at this point. I think Safari's still loading the image, and while loading it blocks all accesses to node.
Is this assumption correct?
That would mean that in Safari, I cannot do _anything_ with the image node until the image is loaded. These are not really bright prospects.
I want a hash table where DOM nodes are the keys. In Rhino, I can just use the node objects directly as the keys, since the Java objects that implement the DOM have handy toString() methods that return a unique string for each object:
var a = {}; a[document] = ...; a[document.documentElement] = ...;
This is obviously not portable. The portable solution, I guess, is to come up with a hash function that works usefully on DOM nodes. Has anyone thought about this problem and come up with a solution? With a DOM 3 implementation I could even do something like:
var nodes = []; var nextIndex = 1; function getIndex(n) { var i = n.getUserData("NodeIndex"); if (!i) { i = nextIndex++; n.setUserData("NodeIndex", i, null); } return i; }
I'm loading an xml data file and then trying to take a particular node and add it, as html, to an element on my page using inner HTML. The xml is like what is below, with the . Code: