PDA

View Full Version : YUI javascript, problem with IE


winstone
01-11-2010, 04:51 AM
Hello,

I made a javascript code which works great on almost all browsers except Internet Explorer, can anyone please let me know what I'm doing wrong here,

The Javascript code is suppose to scan the document after it is loaded, look for anchor tags which contain the id pattern of "cityid_x", put all matched ids into an array, add event listener for matched ids, send a link to ajax.php to get the XML response, from that XML response get the specified tag content and put it into the html
Firefox, Chrome and Safari does all that without complaining, however IE apparently can't get the tag content from XML response and gives the error of Object Required on line : document.getElementById('ywcity').innerHTML = changecity.handler.responseXML.getElementsByTagNam e('ywcity')[0].firstChild.nodeValue;

here is the javascript code:

var changecity;
var city_ids = []; //city_ids is an array

function city_init()
{
//get ids of all Anchors
var i, ii, links;
ii = 0;
links = document.getElementsByTagName("a");

for(i=0;i<links.length;i++)
{
//if id matches the pattern cityid_*, grab em and put them into the array of city_ids, in order of ii
if(links[i].id.match(/^cityid_([0-9]+)/)) {
city_ids[ii] = links[i].id;
ii++;
}
}
//Event listener for when you click on matched ids
YAHOO.util.Event.addListener(city_ids, "click", send_changecity);
}
function send_changecity(e)
{
var city_id = this.id.split(/^cityid_([0-9]+)/)[1];
changecity = new vB_AJAX_Handler(true);
changecity.onreadystatechange(handle_changecity);
changecity.send("/ajax.php?do=changecity&city_id=" + city_id + SESSIONURL + "&securitytoken=" + SECURITYTOKEN);

//stop page from reloading
YAHOO.util.Event.stopEvent(e);
return false;
}

function handle_changecity(e)
{
if(changecity.handler.readyState == 4 && changecity.handler.status == 200)
{
if (changecity.handler.responseXML)
{
//a div inside html document <= content of a tag in xml response
document.getElementById('ywcity').innerHTML = changecity.handler.responseXML.getElementsByTagNam e('ywcity')[0].firstChild.nodeValue;
//additional items
}
}
}
YAHOO.util.Event.addListener(window, "load", city_init);


this is how html document looks like

<div id="ywcity">Sydney</div>
<a id="cityid_2" href="ajax.php?do=changecity&city_id=2">Melbourne</a>


and here is an example XML response created by ajax.php

<ywdata>
<ywcity>Sydney</ywcity>
</ywdata>


Thanks for your time