XmlDom - Compare A String To A .nodeValue It Always Fails, Even If They Are Same?
Apr 13, 2011
I'm still pretty new to javascript and dom, but have been coding with other languages for a while.When I try to compare a string to a .nodeValue it always fails, even if they are same. From what I've read typecasting is automatic in javascript or is this incorrect? For instance
var myGreet = "Hello";
var myFrag = myXML.lastChild.firstChild.firstChild.childNodes[0].nodeValue; returns Hello
if(myGreet == myFrag){ always returns false
alert(myFrag);
}
I found that appending XML string as XML node will fail in IE, so I wrote a small plugin to solve the problem, here is my post: http://blog.darkthread.net/blogs/darkthreadtw/archive/2009/04/29/jquery-xmlext-plugin.aspx.
So my question is, if the above behaviors are the same?? If string is a number, and compare with another number, it will be the same behavior as compare 2 numbers?
In this case, it is comparing 2 strings that are numbers, so they are string comparisons here. correct?
if ("123" > "33") will return true
In this case, "33a" is not a number, that's why when it compare with another number, it always return false. correct?
why the string comparison test doesn't work in this javascript function? It works if you use just text between the currentItem div tags, but not when you use html for an image. I even tried to use iso characters instead of angle brackets, as in "<img src=expand.png></img>" and still no dice. Why not?
Is it because of the way innerHTML manages html and it's not really a string? Is it because it doesn't have all the tags and some other representation?
I'm loading xml files in order to populate some <selectoptions from an xml file. i only need to fill these dropdowns on page load, so am using XML DOM to fill them. Here's basically what the source XML file looks like, abridged to only one record:
Now, the following function loads the information ( i have reasons for only using the microsoft activeXObject as opposed to adding Netscape functionality): Code:
HTML Code:<div class="drag q1 bar" style="top: 10px; left: 0px; position: absolute;">b</div>i assign variables like so:
Code: var style = notationrow[i].childNodes[nodecount].getAttribute("style"); var nodeclass = notationrow[i].childNodes[nodecount].getAttribute("class");
I am trying to get a url attribute from an xml node: <item> <media url="http://blablabla.com" /> </item>
I can do this in IE with the following code: var newDom = xmlhttp.responseXML; var x = newDom.getElementsByTagName("item"); var urlNode = x[0].getElementsByTagName('media'); var myUrl = urlNode[0].getAttribute('url');
If I try this code in FireFox it gives me the following error:
urlNode[0] has no properties referring to this line : myUrl = urlNode[0].getAttribute('url');
I'm not too good with programming, but I'm trying to get my feet wet with some nice little AJAX tools. I have some things currently working, but I'm trying to re-write the code so I can reuse these modules for a number of functions....As of now, I have a function that returns XHR requests [ ajaxRequest(){} ]. I am calling this function inside an XML Parser called [ ajaxParser(){} ]. Once that's created, I have the following code:
Code:
xmlDoc = new ajaxRequest() xmlDoc.onreadystatechange = function(){ if (xmlDoc.readyState == 4){ if (xmlDoc.status == 200){[code]....
At this point, I want the function to return an object that holds all the XML Node names, lengths, textContent, etc. I would like to be able to call this in any other function I write and begin traversing the nodes there. Something like root = new ajaxParser(file.xml);I tried "return parentMenuList;" except the length return is undefined. What I see in the DOM inspector is an object called root (with no other properties to it).
I was wondering if it is possible to create a new line character when modifying a nodeValue with Javascript.
I'm not too familiar with the DOM model so it may not even be possible.
I have <p id="something">text</p>
and when someone clicks a button, 'text' gets updated. I believe I used
Code JavaScript: document.getElementById("something").childNodes[0].nodeValue = "new value";
or something similar to update the text for a p tag).
However, if "new value" is "new value" or "<br />new value", it either appears on the same line and doesn't do anything different (including ), or it actually changes the text to read exactly "<br />new value" (using <br />).
So, is it possible to move part of the text to the next line, or will the DOM model not allow me to do so this way?
I'm trying to re-export a filtered set of XML data. For an input like this:
<object> <header /> <thing1> <value1>1</value1>
[Code].....
However, this currently returns 'undefined'. Is there any easy way to do this, or do I need to actually parse the XML below thing1 and manually write my own XML sub-tree?
After much work, I've come up with some Javascript/DOM that almost works :)
function setblocktitle(id, text) { document.getElementById(id).firstChild.nodeValue = text; }
With my HTML being: <div id="hits" class="modules"> <h2>Hits</h2> <div class="blah"> ...
The problem is, when calling setblocktitle with setblocktitle("hits", "Totals"); I end up with the attached image rather than "Hits" being replaced by "Totals".
var myDIVnode1 = document.createElement("DIV"); // etc myDIVnode1.appendChild(document.createTextNode("a")); // this shows "a" alert(myDIVnode1.firstChild.nodeValue);
I am trying to load html stream directly into webbrowser in delphi. The html contains java script. It loads xml and xsl files and display the xml content in the web browser. I got an error, says access denied for the command xmlDoc.load(fname); If I save the html into a file, test.html, and double click it, it is fine, no problem. The code is actually copied from [URL].
I have 2 arrays and I would like to compare the 2 arrays.If an element in array 1 is NOT in array 2 then I would like to display that element. In this case, I should only display the letter "c" but it doesn't work and I don't know why?
Here's my code:
<html><head> <script type="text/javascript"> function getValue(id){
A HTML Form has 2 sets of 3 dropdown select lists. The 1st set is for users to enter the start time & the 2nd set is for users to enter the end time. The 1st dropdown select list in both the sets is where users will select hours, the 2nd dropdown select list in both the sets is where users will select minutes (the 2nd dropdown select list in both the sets have 4 options - 00, 15, 30 & 45). The 3rd dropdown select list in both the sets is where users will select either AM or PM.
Now it's quite obvious that the start time can come after the end time (on the same date). For e.g. you can't let users select the start time as 9:00 AM & the end time as 6:00 AM.
How do I validate that the end time always comes after the start time & vice-versa?
I'm trying to compare an array to a variable and see if it has the same value then output the second part of the array:
<script language="javascript"> var photoCaptionID0 = "13006"; var photoCaptionID1 = "24018"; var photoCaptionID2 = "13002";
[Code]....
So using this example. If any of the first section in the array captionID (24001, 13001, etc) has the same value as photoCaptionID0, then print the second part of captionID (Item 1, Item 2, etc).
I'm trying to convert a string based on the contents of another string. For example, I have two strings - "Purple" and "Orange" and a variable "P" - I want the script to look at the word "Purple" and everytime is sees the letter "P", assign this to a third variable (result variable) - if the letter it's looking at is not a "p", I want it to take that character from "Orange" and add it to the result string. So the result would be "Prapge". This is the code I have so far, and it doesn't work, absolutely stumped as to why ...
I don't know if JavaScript is the best choice for this or maybe just Java but i want to create something were I can compare a list of names and their picks with a correct list. For example lets say this is the list of peoples picks...code...
if(document.myForm.minbid.value > parseInt(document.myForm.bid.value)) { alert('Your bid amount MUST be higher than the starting bid price'); myForm.bid.focus() return false;}
This is the section I am working with. Now this checks a form field called minbid against a form field called bid. These are both text fields. This works great using this example:
minbid = 20.00 bid = 1.54
In that case the alert will popup because bid is less than minbid, however in this case:
minbid = 20.00 bid = .54
It does NOT show the alert and allows the form to submit. Any ideas here?
What's my "problem": For my website, i want a kind of postal code check. When someone fills in his postalcode and submitted this, he needs to be directed to another page, with information regarding the region that belongs to his postal code.
I will have to create a form, with only one field: postal code. The "action"of that form has to point to a javascript. That script compares the value of the filled in postalcode to some document (txt, xml ??) or database. If the two value match, the user will be directed to another url.
I have 2 arrays and I would like to compare the 2 arrays. If an element in array 1 is NOT in array 2 then I would like to display that element. In this case, I should only display the letter "c" but it doesn't work and I don't know why??
Here's my code: Code: <html><head> <script type="text/javascript"> function getValue(id){ var x=new Array("a","b","c","d","e"); var y=new Array("a","b","3","d","e"); var str=""; for (var i=0; i<x.length; i++){ for (var j=0; j<y.length; j++){ if (x[i] == y[j]){ break; }else{ //Check if reach the last element in the array 2 //If yes, then display that element in array 1 b/c not in array 2 if (y[j] == y.length-1){ str += x[i]; }}}} document.getElementById(id).innerHTML = str; }function init(){ getValue("info"); } </script> </head> <body onload="init()"> <h2 id="info"></h2> </body> </html>