Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Can't refer to innerHTML contents

24 views
Skip to first unread message

javelin

unread,
Sep 10, 2007, 1:39:58 PM9/10/07
to
While using innerHTML to write new HTML to a DIV element, I'm finding
that I can't refer to any new element or text within that DIV. I am
using a simple AJAX call to load a page that has some JavaScript,
which references a select box's value, and pops up an alert telling
you the ID of the option you just clicked. If I load the page
directly, if works fine, but if I load it from within another page via
AJAX, if gives me an "Object Expected" error.

Is there a better way to do this?

Thanks.

Erwin Moller

unread,
Sep 10, 2007, 3:26:07 PM9/10/07
to

Hi,

It is not the div that somehow 'blocks references'. It is the fact your
Javascript doesn't get executed when inserted like that into a page.

Regards,
Erwin Moller

Randy Webb

unread,
Sep 10, 2007, 3:32:56 PM9/10/07
to
javelin said the following on 9/10/2007 1:39 PM:

> While using innerHTML to write new HTML to a DIV element, I'm finding
> that I can't refer to any new element or text within that DIV. I am
> using a simple AJAX call to load a page that has some JavaScript,

And your JS isn't getting executed. The result is that the function you
are trying to call doesn't exist and you get the error "Object Expected".

Simplest solution? Add this function to your page:

function loadHTMLFragment(elemId, HTMLFragment)
{
if (document &&
document.getElementById &&
document.getElementById(elemId) &&
document.createElement &&
document.appendChild &&
document.getElementsByTagName)
{
var el = document.getElementById(elemId);
el.innerHTML = " " + HTMLFragment;
//The   is a hack to cause IE to process the
//script elements if the first node in the
//HTMLFragment is a script element.

var d =el.getElementsByTagName('script');
var t = d.length;
for (var x=0;x<t;x++)
{
var newScript = document.createElement('script');
newScript.type = "text/javascript";
newScript.text = d[x].text;
el.appendChild(newScript);
}
for (var y=0;y<t;y++)
{
el.removeChild(el.getElementsByTagName("script")[0]);
}
}
}

And then in the current code where it inserts the returned page via
innerHTML, you change it. It probably looks something like this:

document.getElementById('someContainer').innerHTML = something.responseText;

Change that line to this:

loadHTMLFragment('someContainer', something.responseText)

If that doesn't solve the problem, post a URL to a sample page.

--
Randy
Chance Favors The Prepared Mind
comp.lang.javascript FAQ - http://jibbering.com/faq/index.html
Javascript Best Practices - http://www.JavascriptToolbox.com/bestpractices/

Erwin Moller

unread,
Sep 11, 2007, 5:49:05 AM9/11/07
to

Hi Randy,

Great piece of code.
I didn't know that was around.
That will save me a lot of stupid, homebrew, custum-delimitted response,
and parsing. ;-)

Thanks!

Regards,
Erwin Moller

Randy Webb

unread,
Sep 11, 2007, 5:54:06 PM9/11/07
to
Erwin Moller said the following on 9/11/2007 5:49 AM:
> Randy Webb wrote:

<snip>

>> If that doesn't solve the problem, post a URL to a sample page.
>>
>
> Hi Randy,
>
> Great piece of code.

Thanks. Your reply made me sit down and improve on it though. As posted,
it didn't handle script elements with a src attribute. The new one does.
It also didn't work in a few browsers that didn't support setting the
.text property of a script element.

> I didn't know that was around.

I wrote it a long time ago in response to a question along the same
lines of this one.

> That will save me a lot of stupid, homebrew, custum-delimitted response,
> and parsing. ;-)

The new one will save you some more problems then :)
The indentation is a little off with lining up { and } (which I like to
do). But, it handles a .src attribute and should work in more Mac
browsers. If anybody has a mac and some time on there hands to test it
for me I would be appreciative.

Tested in IE7, FF1.5/2.0, Opera 9.23 and Safari3Win


var isIE = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 4)
var isIE = true;
@end @*/


function loadHTMLFragment(elemId, HTMLFragment)
{
if (document &&
document.getElementById &&
document.getElementById(elemId) &&
document.createElement &&
document.appendChild &&
document.getElementsByTagName)
{
var el = document.getElementById(elemId);

if(isIE)
{
HTMLFragment = "&nbsp;" + HTMLFragment;


//The &nbsp; is a hack to cause IE to process the
//script elements if the first node in the
//HTMLFragment is a script element.
}

el.innerHTML = HTMLFragment;


var d =el.getElementsByTagName('script');
var t = d.length;
for (var x=0;x<t;x++)
{
var newScript = document.createElement('script');
newScript.type = "text/javascript";

if(d[x].src)
{
newScript.src = d[x].src;
}
else
{
if(isIE)
{


newScript.text = d[x].text;
}

else
{
var s = document.createTextNode(d[x].text);
newScript.appendChild(s);


}
}
el.appendChild(newScript);
}
for (var y=0;y<t;y++)
{
el.removeChild(el.getElementsByTagName("script")[0]);
}
}
}

You still call it the same way as before.

Erwin Moller

unread,
Sep 12, 2007, 5:15:01 AM9/12/07
to

Hi Randy,

Thanks again.
I saved that piece in my libs for future use. ;-)

Since this question (returning javascript via an xmlhttprequest) pops up
for everybody who starts with AJAX sooner or later, maybe we should
suggest to place this code into the FAQ?

here maybe?
http://jibbering.com/faq/index.html#FAQ4_44

What do you think?

Regards,
Erwin Moller

Randy Webb

unread,
Sep 12, 2007, 4:13:34 PM9/12/07
to
Erwin Moller said the following on 9/12/2007 5:15 AM:
> Randy Webb wrote:

<snip>

>> function loadHTMLFragment(elemId, HTMLFragment)

<snip>

>
> Hi Randy,
>
> Thanks again.
> I saved that piece in my libs for future use. ;-)
>
> Since this question (returning javascript via an xmlhttprequest) pops up
> for everybody who starts with AJAX sooner or later, maybe we should
> suggest to place this code into the FAQ?

That was the intent when I started working on it. The code needs some
more testing (non-PC users). I believe it is going to work anywhere
other than iCab and IE/Mac. The only thing that, I believe, needs to be
added to it for iCab and IE5.2 is a test to stay out of the function at
all since they both execute scripts inserted via innerHTML (or that is
what I have been told). I also do not know the usage of those two
browsers and whether they are even worth worrying about.

> here maybe?
> http://jibbering.com/faq/index.html#FAQ4_44
>
> What do you think?

Subject? I don't have a problem adding it.

"How do I get my AJAX inserted scripts to execute?"

Not the best but a start.

I would also prefer it has something to say about the actual problem and
that is the backend not being designed for the front end. The problem
arises from people simply retrieving documents and inserting them into
another document instead of redesigning the back end of a site to make
it AJAX compatible.

Erwin Moller

unread,
Sep 13, 2007, 5:56:04 AM9/13/07
to
Randy Webb wrote:
> Erwin Moller said the following on 9/12/2007 5:15 AM:
>> Randy Webb wrote:
>
> <snip>
>
>>> function loadHTMLFragment(elemId, HTMLFragment)
>
> <snip>
>
>>
>> Hi Randy,
>>
>> Thanks again.
>> I saved that piece in my libs for future use. ;-)
>>
>> Since this question (returning javascript via an xmlhttprequest) pops
>> up for everybody who starts with AJAX sooner or later, maybe we should
>> suggest to place this code into the FAQ?
>
> That was the intent when I started working on it. The code needs some
> more testing (non-PC users). I believe it is going to work anywhere
> other than iCab and IE/Mac. The only thing that, I believe, needs to be
> added to it for iCab and IE5.2 is a test to stay out of the function at
> all since they both execute scripts inserted via innerHTML (or that is
> what I have been told). I also do not know the usage of those two
> browsers and whether they are even worth worrying about.

Hi Randy,

IE5 on Mac was really a headache IMHO.
Coward as I am, I just gave up on it a few years ago after a few long
frustrating sessions.
I don't have statistics, but I don't expect it is used a lot nowadays.
And ICab?

If your code works for all major browsers except these two: well, I say
put it in the faq. :-)
I am sure that will make many users happy.


>
>> here maybe?
>> http://jibbering.com/faq/index.html#FAQ4_44
>>
>> What do you think?
>
> Subject? I don't have a problem adding it.
>
> "How do I get my AJAX inserted scripts to execute?"
>
> Not the best but a start.

Clear, to the point, subject.


>
> I would also prefer it has something to say about the actual problem and
> that is the backend not being designed for the front end. The problem
> arises from people simply retrieving documents and inserting them into
> another document instead of redesigning the back end of a site to make
> it AJAX compatible.

Yes, some background would certainly help new AJAX users.

If I knew enough about the matter I would offer to help to write a
little background. But I don't.
I can tell you what I, as a casual user, was thinking, and based on the
postings I found on the net about this matter, I think most people had
similar expectations:

I remember I was really surprised when I found out it didn't work.
For some (invalid) reason many people expect it to work right away. I
think most people see javascript as an intergral part of html (which it
isn't of course), and since all text, including all markup, appears just
fine after a command like getElementById("..").innerHTML = "bla", they
expect the javascript to be interpreted too.


Thanks again for the code.
Please put it in the faq someday. :-)

Regards,
Erwin Moller

The Natural Philosopher

unread,
Sep 13, 2007, 7:18:54 PM9/13/07
to
I found an odd one today.

The innerHTML thing cause some sort of wobbly in IE7.

I had a function which did lots of stuff incuding changing some text on
a screen. In IE7 it didn't work.

Eventually I discovered that nothing after a blah.innerHTML=myvariable;
command worked in that function.

So I put it at the end of the function, and all now works..

Q1/ Why?
Q2/ given a statement of the form <SPAN name="CHANGME">some text</SPAN>,
other than getelementsByName('CHANGEME')[0].InnerHTML="MYCRAP" how else
to achieve the same end?

Randy Webb

unread,
Sep 13, 2007, 10:31:41 PM9/13/07
to
The Natural Philosopher said the following on 9/13/2007 7:18 PM:

> I found an odd one today.

An odd "what"? Please quote what you are replying to.

> The innerHTML thing cause some sort of wobbly in IE7.

Test page?

> I had a function which did lots of stuff incuding changing some text on
> a screen. In IE7 it didn't work.

Then something else in your code was screwing it up.

> Eventually I discovered that nothing after a blah.innerHTML=myvariable;
> command worked in that function.

Then something else in your function was screwing it up.

> So I put it at the end of the function, and all now works..

Test page?

> Q1/ Why?

My stereo doesn't work. Why?
You can't diagnose what you can't see.

> Q2/ given a statement of the form <SPAN name="CHANGME">some text</SPAN>,
> other than getelementsByName('CHANGEME')[0].InnerHTML="MYCRAP" how else
> to achieve the same end?

Parse MYCRAP and use createTextNode and createElement.

Randy Webb

unread,
Sep 14, 2007, 12:00:49 AM9/14/07
to
Erwin Moller said the following on 9/13/2007 5:56 AM:

> Randy Webb wrote:
>> Erwin Moller said the following on 9/12/2007 5:15 AM:
>>> Randy Webb wrote:
>>
>> <snip>
>>
>>>> function loadHTMLFragment(elemId, HTMLFragment)
>>
>> <snip>
>>
>>>
>>> Hi Randy,
>>>
>>> Thanks again.
>>> I saved that piece in my libs for future use. ;-)
>>>
>>> Since this question (returning javascript via an xmlhttprequest) pops
>>> up for everybody who starts with AJAX sooner or later, maybe we
>>> should suggest to place this code into the FAQ?
>>
>> That was the intent when I started working on it. The code needs some
>> more testing (non-PC users). I believe it is going to work anywhere
>> other than iCab and IE/Mac. The only thing that, I believe, needs to
>> be added to it for iCab and IE5.2 is a test to stay out of the
>> function at all since they both execute scripts inserted via innerHTML
>> (or that is what I have been told). I also do not know the usage of
>> those two browsers and whether they are even worth worrying about.
>
> Hi Randy,
>
> IE5 on Mac was really a headache IMHO.
> Coward as I am, I just gave up on it a few years ago after a few long
> frustrating sessions.

Personally, I think IE5.2 on a mac has gone the way of NN4.xx where it
is a dead browser. It was replaced in 2003 by Safari as the default Mac
browser. No updates since 2000.
<URL: http://en.wikipedia.org/wiki/Internet_Explorer_for_Mac>

> I don't have statistics, but I don't expect it is used a lot nowadays.
> And ICab?

I don't have a lot of faith in web statistics and that belief is
reaffirmed because according to most statistics I can quickly locate
using Google puts the mac usage on the entire planet at about 4 users.

iCab is a little different than IE/Mac though as it had a release in
2006 so I wouldn't consider it a dead browser yet, just a hard one to
script.
<URL: http://en.wikipedia.org/wiki/ICab>

AS for supporting it, it is no harder to support ICab than it is IE5.2
with regards to script injection. They both will fire script elements
inserted via innerHTML (That is with text, never tested it with a .src
attribute).

> If your code works for all major browsers except these two: well, I say
> put it in the faq. :-)
> I am sure that will make many users happy.

I think it would end up like DynWrite where it has a "majority
satisfaction" code in the FAQ itself and then links to a Notes page
where the Notes page goes into detail and has a different version.
Probably let the FAQ version cover browsers that handle .text and let
the Notes version cover any browser where I can make it work.

>>> here maybe?
>>> http://jibbering.com/faq/index.html#FAQ4_44
>>>
>>> What do you think?
>>
>> Subject? I don't have a problem adding it.
>>
>> "How do I get my AJAX inserted scripts to execute?"
>>
>> Not the best but a start.
>
> Clear, to the point, subject.

I just don't like the AJAX part of it simply because there are more ways
to inject scripts than just AJAX.

>> I would also prefer it has something to say about the actual problem
>> and that is the backend not being designed for the front end. The
>> problem arises from people simply retrieving documents and inserting
>> them into another document instead of redesigning the back end of a
>> site to make it AJAX compatible.
>
> Yes, some background would certainly help new AJAX users.

That is a different subject though. To me anyway. "I want an AJAX site,
what do I need to do?"

> If I knew enough about the matter I would offer to help to write a
> little background. But I don't.

I discovered it by accident actually. I had an AOL account. They would
give you webspace. 2mb's with no banner, 20mb's if you allowed an AOL
banner. You could have 7 screen names and hot link to them. I was trying
to find a way to have a larger personal webpage without having a banner
and somehow I ended up at loading .js files so that all I would have to
store on the server was the data and not all the other HTML aspects. It
started there and ended up here. It wasn't something I set out to try to
discover.

> I can tell you what I, as a casual user, was thinking, and based on the
> postings I found on the net about this matter, I think most people had
> similar expectations:
>
> I remember I was really surprised when I found out it didn't work.

That was actually how I found out. Trying to load a .js file without
reloading the page. The ways I found were intriguing (I can do it in
NN4.xx for example). That was way back around 1999 or so.

> For some (invalid) reason many people expect it to work right away. I
> think most people see javascript as an intergral part of html (which it
> isn't of course), and since all text, including all markup, appears just
> fine after a command like getElementById("..").innerHTML = "bla", they
> expect the javascript to be interpreted too.

I was surprised the first time I tried it. I got lucky with c.l.j as a
place to find out different ways to do it.

>
> Thanks again for the code.
> Please put it in the faq someday. :-)

It will end up there, just a matter of when.

The Natural Philosopher

unread,
Sep 14, 2007, 5:31:59 AM9/14/07
to

IE5.2 is still the only browser that really works on a MAC OS9 machine.

Whilst a small and dwindling population, there are still machines out
there using it.

The Natural Philosopher

unread,
Sep 14, 2007, 5:41:28 AM9/14/07
to
Randy Webb wrote:
> The Natural Philosopher said the following on 9/13/2007 7:18 PM:
>> I found an odd one today.
>
> An odd "what"? Please quote what you are replying to.
>
>> The innerHTML thing cause some sort of wobbly in IE7.
>
> Test page?
>

OK. You asked for it. I have tried to remove some of the less relevant
stuff.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<TITLE>Currency Converter</TITLE>

<link rel=stylesheet href="../Styles/Style.css" type="text/css">
</head>
<body>
<center><H1>Currency Converter</H1></center>
<FORM method="POST" enctype="multipart/form-data"
action="currency_converter.php">

<center>
<table cellpadding="10px">
<TR><TD>

<p> This form is used to convert other currencies to sterling, or
<i>vice versa</i> and also it can be used to
to update the currency rate for a particular currency.
<BR> Select the country you want, and enter the quantity of foreign, or
UK currency.
<BR>To update the exchange rate, check with the latest <A
HREF="http://www.xe.com/ucc/full.php" target="_blank">spot rates</A>,
key in that conversion factor and press the 'update rate' button.
<P><B>NOTE:</B> The rates are expressed in terms of how many units of
foreign currency one UKP will purchase.

</TD></TR></table>
</center>
<HR>
<script type="text/javascript" language="JavaScript">
var currency_name=new Array();
var rate=new Array();
var current_country_id=233;
var current_rate=1;
var current_currency="";
function new_country()
{

index=document.forms[0].country_id.selectedIndex;
current_country_id=document.forms[0].country_id[index].value;
current_rate=rate[current_country_id];
current_currency=currency_name[current_country_id];
document.getElementsByName("rate")[0].value=current_rate;
new_forint();
document.getElementsByName("forint")[0].innerHTML=current_currency;
<THIS IS WHAT CAUSES INDIGESTION THE ROUTINE APPERAS TO DO IT, BUT FAIL
AFTERWARDS. IF IT IS NOT THE LAST THING IN THE ROUTINE, NOTHING BEYOND
IT GETS EXECUTED: IE7 ONLY>

}
function new_rate()
{
new_sterling();
}
function new_sterling()
{
current_rate=document.getElementsByName("rate")[0].value;
sterling=document.getElementsByName("sterling")[0].value;
foreign_currency=Math.round(sterling*100*current_rate)/100;
document.getElementsByName("foreign_currency")[0].value=foreign_currency;
}
function new_forint()
{
current_rate=document.getElementsByName("rate")[0].value;
foreign_currency=document.getElementsByName("foreign_currency")[0].value;
sterling=Math.round((foreign_currency*100)/current_rate)/100;
document.getElementsByName("sterling")[0].value=sterling;
}
function submit_form()
{
current_rate=document.getElementsByName("rate")[0].value;
index=document.forms[0].country_id.selectedIndex;
current_country_id=document.forms[0].country_id[index].value;
current_currency=currency_name[current_country_id];
var message="\n\n" +
"_____________________________________________\n\n" +
"You have chosen to update the currency \n\"" + current_currency +
"\"\n" +
"With exchange rate of "+current_rate +" to the pound \n" +
"Please double check before proceeding!\n" +
"______________________________________________\n" ;
if (confirm(message))
{
document.getElementsByName("update")[0].value="yes";
document.forms[0].submit();
}
}

</script>
<center><table border="0" width="80%"><tr><td colspan="2" align="center">
<select name="country_id" onchange="new_country()">
<script type="text/javascript"
language="JavaScript">currency_name[1]="Russia
Rubles";rate[1]=51.6147;</script>
<option value="1">Abkhazia (RUB)</option>
<script type="text/javascript"
language="JavaScript">currency_name[2]="Afghanistan
Afghanis";rate[2]=99.697;</script>
<option value="2">Afghanistan (AFN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[3]="Cyprus
Pounds";rate[3]=0.857854;</script>
<option value="3">Akrotiri and Dhekelia (CYP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[4]="Euro";rate[4]=1.47272;</script>

<option value="4">Aland (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[5]="Albania
Leke";rate[5]=180.917;</script>
<option value="5">Albania (ALL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[6]="Algeria
Dinars";rate[6]=137.477;</script>
<option value="6">Algeria (DZD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[7]="United States
Dollars";rate[7]=2.00668;</script>
<option value="7">American Samoa (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[8]="Euro";rate[8]=1.47272;</script>
<option value="8">Andorra (EUR)</option>

<script type="text/javascript"
language="JavaScript">currency_name[9]="Angolan
Kwanza";rate[9]=149.713;</script>
<option value="9">Angola (AOA)</option>
<script type="text/javascript"
language="JavaScript">currency_name[10]="East Caribbean
Dollars";rate[10]=5.35782;</script>
<option value="10">Anguilla (XCD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[11]="East Caribbean
Dollars";rate[11]=5.35782;</script>
<option value="11">Antigua and Barbuda (XCD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[12]="Argentina
Pesos";rate[12]=6.36044;</script>
<option value="12">Argentina (ARS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[13]="Armenian
Dram";rate[13]=675.233;</script>

<option value="13">Armenia (AMD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[14]="Aruba
Guilder";rate[14]=3.58393;</script>
<option value="14">Aruba (AWG)</option>
<script type="text/javascript"
language="JavaScript">currency_name[15]="Saint Helena
Pound";rate[15]=1;</script>
<option value="15">Ascension Island (SHP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[16]="Australia
Dollars";rate[16]=2.4425;</script>
<option value="16">Australia (AUD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[17]="Euro";rate[17]=1.47272;</script>
<option value="17">Austria (EUR)</option>

<script type="text/javascript"
language="JavaScript">currency_name[18]="AzerBaijan New
Manat";rate[18]=1.70904;</script>
<option value="18">Azerbaijan (AZN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[19]="Bahamas
Dollars";rate[19]=2.00668;</script>
<option value="19">Bahamas (BSD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[20]="Bahrain
Dinars";rate[20]=0.756537;</script>
<option value="20">Bahrain (BHD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[21]="Bangladesh
Taka";rate[21]=138.059;</script>
<option value="21">Bangladesh (BDT)</option>
<script type="text/javascript"
language="JavaScript">currency_name[22]="Barbados
Dollars";rate[22]=4.00332;</script>

<option value="22">Barbados (BBD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[23]="Belarus
Ruble";rate[23]=4324.02;</script>
<option value="23">Belarus (BYR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[24]="Euro";rate[24]=1.47272;</script>
<option value="24">Belgium (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[25]="Belize
Dollar";rate[25]=3.92381;</script>
<option value="25">Belize (BZD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[26]="CFA BCEAO
Francs";rate[26]=966.043;</script>
<option value="26">Benin (XOF)</option>

<script type="text/javascript"
language="JavaScript">currency_name[27]="Bermuda
Dollars";rate[27]=2.00668;</script>
<option value="27">Bermuda (BMD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[28]="Bhutan
Ngultrum";rate[28]=82.0152;</script>
<option value="28">Bhutan (BTN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[29]="Bolivian
Boliviano";rate[29]=15.5261;</script>
<option value="29">Bolivia (BOB)</option>
<script type="text/javascript"
language="JavaScript">currency_name[30]="Bosnia/Herzegovina Convertible
Marka";rate[30]=2.88717;</script>
<option value="30">Bosnia and Herzegovina (BAM)</option>
<script type="text/javascript"
language="JavaScript">currency_name[31]="Botswana
Pula";rate[31]=12.3887;</script>

<option value="31">Botswana (BWP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[32]="Brazil
Reais";rate[32]=3.98126;</script>
<option value="32">Brazil (BRL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[241]="United States
Dollars";rate[241]=2.00668;</script>
<option value="241">British Virgin Islands (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[33]="Brunei
Dollar";rate[33]=3.05817;</script>
<option value="33">Brunei (BND)</option>
<script type="text/javascript"
language="JavaScript">currency_name[34]="Bulgaria
Leva";rate[34]=2.87991;</script>
<option value="34">Bulgaria (BGN)</option>

<script type="text/javascript"
language="JavaScript">currency_name[35]="CFA BCEAO
Francs";rate[35]=966.043;</script>
<option value="35">Burkina Faso (XOF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[36]="Myanmar (Burma)
Kyat";rate[36]=12.5211;</script>
<option value="36">Burma (MMK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[37]="Burundi
Franc";rate[37]=2176.89;</script>
<option value="37">Burundi (BIF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[38]="Cambodian
Riel";rate[38]=8039.7;</script>
<option value="38">Cambodia (KHR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[39]="CFA BEAC
Francs";rate[39]=966.043;</script>

<option value="39">Cameroon (XAF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[40]="Canada
Dollars";rate[40]=2.12945;</script>
<option value="40">Canada (CAD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[41]="Cape Verde
Escudo";rate[41]=162.477;</script>
<option value="41">Cape Verde (CVE)</option>
<script type="text/javascript"
language="JavaScript">currency_name[42]="Cayman Islands
Dollar";rate[42]=1.63995;</script>
<option value="42">Cayman Islands (KYD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[43]="CFA BEAC
Francs";rate[43]=966.043;</script>
<option value="43">Central African Republic (XAF)</option>

<script type="text/javascript"
language="JavaScript">currency_name[44]="CFA BEAC
Francs";rate[44]=966.043;</script>
<option value="44">Chad (XAF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[45]="Chile
Pesos";rate[45]=1051.1;</script>
<option value="45">Chile (CLP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[46]="China Yuan
Renminbi";rate[46]=15.1628;</script>
<option value="46">China (CNY)</option>
<script type="text/javascript"
language="JavaScript">currency_name[47]="Australia
Dollars";rate[47]=2.4425;</script>
<option value="47">Christmas Island (AUD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[48]="Australia
Dollars";rate[48]=2.4425;</script>

<option value="48">Cocos (Keeling) Islands (AUD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[49]="Colombia
Pesos";rate[49]=4296.51;</script>
<option value="49">Colombia (COP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[50]="Komoro
Franc";rate[50]=723.857;</script>
<option value="50">Comoros (KMF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[51]="Congo/Kinshasa
Franc";rate[51]=1120.76;</script>
<option value="51">Congo (CDF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[52]="New Zealand
Dollars";rate[52]=2.85323;</script>
<option value="52">Cook Islands (NZD)</option>

<script type="text/javascript"
language="JavaScript">currency_name[53]="Costa Rica
Colones";rate[53]=1035.11;</script>
<option value="53">Costa Rica (CRC)</option>
<script type="text/javascript"
language="JavaScript">currency_name[54]="CFA BCEAO
Francs";rate[54]=966.043;</script>
<option value="54">Cote d'Ivoire (XOF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[55]="Croatia
Kuna";rate[55]=10.7848;</script>
<option value="55">Croatia (HRK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[56]="Cuban
Peso";rate[56]=53.0137;</script>
<option value="56">Cuba (CUP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[57]="Cyprus
Pounds";rate[57]=0.857854;</script>

<option value="57">Cyprus (CYP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[58]="Czech Republic
Koruny";rate[58]=40.7156;</script>
<option value="58">Czech Republic (CZK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[59]="Denmark
Kroner";rate[59]=10.962;</script>
<option value="59">Denmark (DKK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[60]="Djibouti
Franc";rate[60]=351.371;</script>
<option value="60">Djibouti (DJF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[61]="East Caribbean
Dollars";rate[61]=5.35782;</script>
<option value="61">Dominica (XCD)</option>

<script type="text/javascript"
language="JavaScript">currency_name[62]="Dominican Republic
Pesos";rate[62]=66.13;</script>
<option value="62">Dominican Republic (DOP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[63]="United States
Dollars";rate[63]=2.00668;</script>
<option value="63">East Timor (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[64]="United States
Dollars";rate[64]=2.00668;</script>
<option value="64">Ecuador (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[65]="Egypt
Pounds";rate[65]=11.3434;</script>
<option value="65">Egypt (EGP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[66]="El Salvador
Colon";rate[66]=17.5108;</script>

<option value="66">El Salvador (SVC)</option>
<script type="text/javascript"
language="JavaScript">currency_name[67]="CFA BEAC
Francs";rate[67]=966.043;</script>
<option value="67">Equatorial Guinea (XAF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[68]="Eritraen
Nakfa";rate[68]=30.001;</script>
<option value="68">Eritrea (ERN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[69]="Estonia
Krooni";rate[69]=23.0432;</script>
<option value="69">Estonia (EEK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[70]="Ethipian
Birr";rate[70]=18.1476;</script>
<option value="70">Ethiopia (ETB)</option>

<script type="text/javascript"
language="JavaScript">currency_name[71]="Falkland Islands
pound";rate[71]=16.0777;</script>
<option value="71">Falkland Islands (FKP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[72]="Denmark
Kroner";rate[72]=10.962;</script>
<option value="72">Faroe Islands (DKK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[73]="Fiji
Dollars";rate[73]=3.25714;</script>
<option value="73">Fiji (FJD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[74]="Euro";rate[74]=1.47272;</script>
<option value="74">Finland (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[75]="Euro";rate[75]=1.47272;</script>

<option value="75">France (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[76]="Comptoirs Francais du Pacifique
Francs";rate[76]=175.743;</script>
<option value="76">French Polynesia (XPF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[77]="CFA BEAC
Francs";rate[77]=966.043;</script>
<option value="77">Gabon (XAF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[78]="Gambian
Dalasi";rate[78]=48.4126;</script>
<option value="78">Gambia (GMD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[79]="Georgian
Lari";rate[79]=3.31337;</script>
<option value="79">Georgia (GEL)</option>

<script type="text/javascript"
language="JavaScript">currency_name[80]="Euro";rate[80]=1.47272;</script>
<option value="80">Germany (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[81]="Ghana
Cedi";rate[81]=18950.8;</script>
<option value="81">Ghana (GHC)</option>
<script type="text/javascript"
language="JavaScript">currency_name[82]="Gibraltar
Pound";rate[82]=1;</script>
<option value="82">Gibraltar (GIP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[83]="Euro";rate[83]=1.47272;</script>
<option value="83">Greece (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[84]="Norway
Kroner";rate[84]=11.7005;</script>

<option value="84">Greenland (NOK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[85]="East Caribbean
Dollars";rate[85]=5.35782;</script>
<option value="85">Grenada (XCD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[86]="United States
Dollars";rate[86]=2.00668;</script>
<option value="86">Guam (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[87]="Guatemalan
Quetzal";rate[87]=15.3384;</script>
<option value="87">Guatemala (GTQ)</option>
<script type="text/javascript"
language="JavaScript">currency_name[88]="United Kingdom
Pounds";rate[88]=1;</script>
<option value="88">Guernsey (GBP)</option>

<script type="text/javascript"
language="JavaScript">currency_name[89]="Guinea
Franc";rate[89]=8002.65;</script>
<option value="89">Guinea (GNF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[90]="CFA BCEAO
Francs";rate[90]=966.043;</script>
<option value="90">Guinea-Bissau (XOF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[91]="Guyana
Dollar";rate[91]=406.136;</script>
<option value="91">Guyana (GYD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[92]="Haitian
Gourde";rate[92]=70.2522;</script>
<option value="92">Haiti (HTG)</option>
<script type="text/javascript"
language="JavaScript">currency_name[93]="Honduras
Lempira";rate[93]=37.7019;</script>

<option value="93">Honduras (HNL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[94]="Hong Kong
Dollars";rate[94]=15.6518;</script>
<option value="94">Hong Kong (HKD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[95]="Hungary
Forint";rate[95]=380.127;</script>
<option value="95">Hungary (HUF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[96]="Iceland
Kronur";rate[96]=129.451;</script>
<option value="96">Iceland (ISK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[97]="India
Rupees";rate[97]=82.2135;</script>
<option value="97">India (INR)</option>

<script type="text/javascript"
language="JavaScript">currency_name[98]="Indonesia
Rupiahs";rate[98]=18869;</script>
<option value="98">Indonesia (IDR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[99]="Iran
Rials";rate[99]=18518.3;</script>
<option value="99">Iran (IRR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[100]="Iraq
Dinars";rate[100]=2473.87;</script>
<option value="100">Iraq (IQD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[101]="Euro";rate[101]=1.47272;</script>
<option value="101">Ireland (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[102]="United Kingdom
Pounds";rate[102]=1;</script>

<option value="102">Isle of Man (GBP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[103]="Israel New
Shekels";rate[103]=8.29289;</script>
<option value="103">Israel (ILS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[104]="Euro";rate[104]=1.47272;</script>
<option value="104">Italy (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[105]="Jamaica
Dollars";rate[105]=135.451;</script>
<option value="105">Jamaica (JMD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[106]="Japan
Yen";rate[106]=230.069;</script>
<option value="106">Japan (JPY)</option>

<script type="text/javascript"
language="JavaScript">currency_name[107]="United Kingdom
Pounds";rate[107]=1;</script>
<option value="107">Jersey (GBP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[108]="Jordan
Dinars";rate[108]=1.42273;</script>
<option value="108">Jordan (JOD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[109]="Kazakhstan
Tenge";rate[109]=252.03;</script>
<option value="109">Kazakhstan (KZT)</option>
<script type="text/javascript"
language="JavaScript">currency_name[110]="Kenya
Shillings";rate[110]=134.548;</script>
<option value="110">Kenya (KES)</option>
<script type="text/javascript"
language="JavaScript">currency_name[111]="Australia
Dollars";rate[111]=2.4425;</script>

<option value="111">Kiribati (AUD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[247]="Euro";rate[247]=1.47272;</script>
<option value="247">Kosovo (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[114]="Kuwait
Dinars";rate[114]=0.56522;</script>
<option value="114">Kuwait (KWD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[115]="Kyrgyztan
Som";rate[115]=75.6077;</script>
<option value="115">Kyrgyzstan (KGS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[116]="Laos
Kip";rate[116]=19150.4;</script>
<option value="116">Laos (LAK)</option>

<script type="text/javascript"
language="JavaScript">currency_name[117]="Latvian
Lat";rate[117]=1.03368;</script>
<option value="117">Latvia (LVL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[118]="Lebanon
Pounds";rate[118]=3007.77;</script>
<option value="118">Lebanon (LBP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[119]="South Africa
Rand";rate[119]=14.579;</script>
<option value="119">Lesotho (ZAR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[120]="Liberian
Dollar";rate[120]=124.084;</script>
<option value="120">Liberia (LRD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[121]="Libyan
Dinar";rate[121]=2.52075;</script>

<option value="121">Libya (LYD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[122]="Switzerland
Francs";rate[122]=2.40951;</script>
<option value="122">Liechtenstein (CHF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[123]="Lithuanian
Litas";rate[123]=5.07915;</script>
<option value="123">Lithuania (LTL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[124]="Euro";rate[124]=1.47272;</script>
<option value="124">Luxembourg (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[125]="Macau
Pataca";rate[125]=16.0777;</script>
<option value="125">Macau (MOP)</option>

<script type="text/javascript"
language="JavaScript">currency_name[126]="Macedonian
Denar";rate[126]=90.1573;</script>
<option value="126">Macedonia (MKD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[127]="Madagascarian
Ariary";rate[127]=3672.92;</script>
<option value="127">Madagascar (MGA)</option>
<script type="text/javascript"
language="JavaScript">currency_name[128]="Malawi
Kwacha";rate[128]=280.217;</script>
<option value="128">Malawi (MWK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[129]="Malaysia
Ringgits";rate[129]=7.01032;</script>
<option value="129">Malaysia (MYR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[130]="Maldives
Rufiyaa";rate[130]=25.8124;</script>

<option value="130">Maldives (MVR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[131]="CFA BCEAO
Francs";rate[131]=966.043;</script>
<option value="131">Mali (XOF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[132]="Malta
Liri";rate[132]=0.635414;</script>
<option value="132">Malta (MTL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[133]="United States
Dollars";rate[133]=2.00668;</script>
<option value="133">Marshall Islands (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[134]="Mauritanian
Ouguiya";rate[134]=508.423;</script>
<option value="134">Mauritania (MRO)</option>

<script type="text/javascript"
language="JavaScript">currency_name[135]="Mauritius
Rupees";rate[135]=61.9993;</script>
<option value="135">Mauritius (MUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[136]="Euro";rate[136]=1.47272;</script>
<option value="136">Mayotte (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[137]="Mexico
Pesos";rate[137]=22.2736;</script>
<option value="137">Mexico (MXN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[138]="United States
Dollars";rate[138]=2.00668;</script>
<option value="138">Micronesia (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[139]="Moldova
Leu";rate[139]=24.1321;</script>

<option value="139">Moldova (MDL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[140]="Euro";rate[140]=1.47272;</script>
<option value="140">Monaco (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[141]="Mongolians
Tughrik";rate[141]=2370.23;</script>
<option value="141">Mongolia (MNT)</option>
<script type="text/javascript"
language="JavaScript">currency_name[142]="Euro";rate[142]=1.47272;</script>
<option value="142">Montenegro (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[143]="East Caribbean
Dollars";rate[143]=5.35782;</script>
<option value="143">Montserrat (XCD)</option>

<script type="text/javascript"
language="JavaScript">currency_name[144]="Morocco
Dirhams";rate[144]=16.4732;</script>
<option value="144">Morocco (MAD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[145]="Mozambique
Metical";rate[145]=51.7149;</script>
<option value="145">Mozambique (MZN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[146]="Myanmar (Burma)
Kyat";rate[146]=12.5211;</script>
<option value="146">Myanmar (MMK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[147]="Armenian
Dram";rate[147]=675.233;</script>
<option value="147">Nagorno-Karabakh (AMD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[148]="South Africa
Rand";rate[148]=14.579;</script>

<option value="148">Namibia (ZAR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[149]="Australia
Dollars";rate[149]=2.4425;</script>
<option value="149">Nauru (AUD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[150]="Nepalese
Rupee";rate[150]=130.872;</script>
<option value="150">Nepal (NPR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[151]="Euro";rate[151]=1.47272;</script>
<option value="151">Netherlands (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[152]="Netherland Anitlles
Guilder";rate[152]=3.56365;</script>
<option value="152">Netherlands Antilles (ANG)</option>

<script type="text/javascript"
language="JavaScript">currency_name[153]="Comptoirs Francais du
Pacifique Francs";rate[153]=175.743;</script>
<option value="153">New Caledonia (XPF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[154]="New Zealand
Dollars";rate[154]=2.85323;</script>
<option value="154">New Zealand (NZD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[155]="Nicaraguan
Cordoba";rate[155]=37.0621;</script>
<option value="155">Nicaragua (NIO)</option>
<script type="text/javascript"
language="JavaScript">currency_name[156]="CFA BCEAO
Francs";rate[156]=966.043;</script>
<option value="156">Niger (XOF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[157]="Nigerian
Naira";rate[157]=256.13;</script>

<option value="157">Nigeria (NGN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[158]="New Zealand
Dollars";rate[158]=2.85323;</script>
<option value="158">Niue (NZD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[159]="Australia
Dollars";rate[159]=2.4425;</script>
<option value="159">Norfolk Island (AUD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[112]="North Korean
Won";rate[112]=285.168;</script>
<option value="112">North Korea (KPW)</option>
<script type="text/javascript"
language="JavaScript">currency_name[162]="North Korean
Won";rate[162]=285.168;</script>
<option value="162">North Korea (KPW)</option>

<script type="text/javascript"
language="JavaScript">currency_name[160]="Turkey New
Lira";rate[160]=2.67336;</script>
<option value="160">Northern Cyprus (TRY)</option>
<script type="text/javascript"
language="JavaScript">currency_name[161]="United States
Dollars";rate[161]=2.00668;</script>
<option value="161">Northern Mariana Islands (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[163]="Norway
Kroner";rate[163]=11.7005;</script>
<option value="163">Norway (NOK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[164]="Oman
Rials";rate[164]=0.77257;</script>
<option value="164">Oman (OMR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[165]="Pakistan
Rupees";rate[165]=122.006;</script>

<option value="165">Pakistan (PKR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[166]="United States
Dollars";rate[166]=2.00668;</script>
<option value="166">Palau (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[167]="Israel New
Shekels";rate[167]=8.29289;</script>
<option value="167">Palestine (ILS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[168]="Panama
Balboa";rate[168]=2.00108;</script>
<option value="168">Panama (PAB)</option>
<script type="text/javascript"
language="JavaScript">currency_name[169]="Papua New Guinea
Kina";rate[169]=5.89153;</script>
<option value="169">Papua New Guinea (PGK)</option>

<script type="text/javascript"
language="JavaScript">currency_name[170]="Paraguay
Guarani";rate[170]=10252.5;</script>
<option value="170">Paraguay (PYG)</option>
<script type="text/javascript"
language="JavaScript">currency_name[171]="Peru Nuevos
Soles";rate[171]=6.34912;</script>
<option value="171">Peru (PEN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[172]="Philippines
Pesos";rate[172]=93.7318;</script>
<option value="172">Philippines (PHP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[173]="New Zealand
Dollars";rate[173]=2.85323;</script>
<option value="173">Pitcairn Islands (NZD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[174]="Poland
Zlotych";rate[174]=5.64389;</script>

<option value="174">Poland (PLN)</option>
<script type="text/javascript"
language="JavaScript">currency_name[175]="Euro";rate[175]=1.47272;</script>
<option value="175">Portugal (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[176]="United States
Dollars";rate[176]=2.00668;</script>
<option value="176">Puerto Rico (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[177]="Qatar
Riyals";rate[177]=7.3043;</script>
<option value="177">Qatar (QAR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[178]="Romania New
Lei";rate[178]=4.77709;</script>
<option value="178">Romania (RON)</option>

<script type="text/javascript"
language="JavaScript">currency_name[179]="Russia
Rubles";rate[179]=51.6147;</script>
<option value="179">Russia (RUB)</option>
<script type="text/javascript"
language="JavaScript">currency_name[180]="Rwandan
Franc";rate[180]=1096.42;</script>
<option value="180">Rwanda (RWF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[181]="Morocco
Dirhams";rate[181]=16.4732;</script>
<option value="181">Sahrawi Arab Democratic Republic (MAD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[182]="Euro";rate[182]=1.47272;</script>
<option value="182">Saint Barthelemy (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[183]="Saint Helena
Pound";rate[183]=1;</script>

<option value="183">Saint Helena (SHP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[184]="East Caribbean
Dollars";rate[184]=5.35782;</script>
<option value="184">Saint Kitts and Nevis (XCD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[185]="East Caribbean
Dollars";rate[185]=5.35782;</script>
<option value="185">Saint Lucia (XCD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[186]="Euro";rate[186]=1.47272;</script>
<option value="186">Saint Martin (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[187]="Euro";rate[187]=1.47272;</script>
<option value="187">Saint Pierre and Miquelon (EUR)</option>

<script type="text/javascript"
language="JavaScript">currency_name[188]="East Caribbean
Dollars";rate[188]=5.35782;</script>
<option value="188">Saint Vincent and the Grenadines (XCD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[189]="West Samoan
Tala";rate[189]=5.41025;</script>
<option value="189">Samoa (WST)</option>
<script type="text/javascript"
language="JavaScript">currency_name[190]="Euro";rate[190]=1.47272;</script>
<option value="190">San Marino (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[191]="Sao Tome and Principe
Dobra";rate[191]=26942.1;</script>
<option value="191">Sao Tome and Pri?ncipe (STD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[192]="Saudi Arabia
Riyals";rate[192]=7.52511;</script>

<option value="192">Saudi Arabia (SAR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[193]="CFA BCEAO
Francs";rate[193]=966.043;</script>
<option value="193">Senegal (XOF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[194]="Serbia
Dinar";rate[194]=120.433;</script>
<option value="194">Serbia (RSD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[195]="Seychelles
Rupee";rate[195]=13.5686;</script>
<option value="195">Seychelles (SCR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[196]="Sierra Leone
Leone";rate[196]=5907.71;</script>
<option value="196">Sierra Leone (SLL)</option>

<script type="text/javascript"
language="JavaScript">currency_name[197]="Singapore
Dollars";rate[197]=3.06253;</script>
<option value="197">Singapore (SGD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[198]="Slovakia
Koruny";rate[198]=49.802;</script>
<option value="198">Slovakia (SKK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[199]="Euro";rate[199]=1.47272;</script>
<option value="199">Slovenia (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[200]="Solomon Islands
Dollar";rate[200]=14.382;</script>
<option value="200">Solomon Islands (SBD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[201]="Somalia
Shilling";rate[201]=2667.7;</script>

<option value="201">Somalia (SOS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[202]="Somalia
Shilling";rate[202]=2667.7;</script>
<option value="202">Somaliland (SOS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[203]="South Africa
Rand";rate[203]=14.579;</script>
<option value="203">South Africa (ZAR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[113]="South Korea
Won";rate[113]=1883.87;</script>
<option value="113">South Korea (KRW)</option>
<script type="text/javascript"
language="JavaScript">currency_name[204]="South Korea
Won";rate[204]=1883.87;</script>
<option value="204">South Korea (KRW)</option>

<script type="text/javascript"
language="JavaScript">currency_name[205]="Russia
Rubles";rate[205]=51.6147;</script>
<option value="205">South Ossetia (RUB)</option>
<script type="text/javascript"
language="JavaScript">currency_name[206]="Euro";rate[206]=1.47272;</script>
<option value="206">Spain (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[207]="Sri Lanka
Rupees";rate[207]=226.524;</script>
<option value="207">Sri Lanka (LKR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[208]="Sudan
Pound";rate[208]=4.00181;</script>
<option value="208">Sudan (SDG)</option>
<script type="text/javascript"
language="JavaScript">currency_name[209]="Suriname
Dollar";rate[209]=5.49109;</script>

<option value="209">Suriname (SRD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[210]="Norway
Kroner";rate[210]=11.7005;</script>
<option value="210">Svalbard (NOK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[211]="Swaziland
Lilangeni";rate[211]=14.6052;</script>
<option value="211">Swaziland (SZL)</option>
<script type="text/javascript"
language="JavaScript">currency_name[212]="Sweden
Kronor";rate[212]=13.809;</script>
<option value="212">Sweden (SEK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[213]="Switzerland
Francs";rate[213]=2.40951;</script>
<option value="213">Switzerland (CHF)</option>

<script type="text/javascript"
language="JavaScript">currency_name[214]="Syrian
Pound";rate[214]=102.701;</script>
<option value="214">Syria (SYP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[215]="Taiwan New
Dollars";rate[215]=66.2203;</script>
<option value="215">Taiwan (TWD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[216]="Tajkistan
Somoni";rate[216]=6.89119;</script>
<option value="216">Tajikistan (TJS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[217]="Tanzanian
Shilling";rate[217]=2552.34;</script>
<option value="217">Tanzania (TZS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[218]="Thailand
Baht";rate[218]=65.7199;</script>

<option value="218">Thailand (THB)</option>
<script type="text/javascript"
language="JavaScript">currency_name[219]="CFA BCEAO
Francs";rate[219]=966.043;</script>
<option value="219">Togo (XOF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[220]="New Zealand
Dollars";rate[220]=2.85323;</script>
<option value="220">Tokelau (NZD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[221]="Tongan
Pa'anga";rate[221]=3.99316;</script>
<option value="221">Tonga (TOP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[222]="Euro";rate[222]=1.47272;</script>
<option value="222">Transnistria (EUR)</option>

<script type="text/javascript"
language="JavaScript">currency_name[223]="Trinidad and Tobago
Dollars";rate[223]=12.6285;</script>
<option value="223">Trinidad and Tobago (TTD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[224]="Saint Helena
Pound";rate[224]=1;</script>
<option value="224">Tristan da Cunha (SHP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[225]="Tunisia
Dinars";rate[225]=2.56875;</script>
<option value="225">Tunisia (TND)</option>
<script type="text/javascript"
language="JavaScript">currency_name[226]="Turkey New
Lira";rate[226]=2.67336;</script>
<option value="226">Turkey (TRY)</option>
<script type="text/javascript"
language="JavaScript">currency_name[227]="Turkmenistan
Manat";rate[227]=10418.6;</script>

<option value="227">Turkmenistan (TMM)</option>
<script type="text/javascript"
language="JavaScript">currency_name[228]="United States
Dollars";rate[228]=2.00668;</script>
<option value="228">Turks and Caicos Islands (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[229]="Australia
Dollars";rate[229]=2.4425;</script>
<option value="229">Tuvalu (AUD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[230]="Ugandan
Shilling";rate[230]=3586.66;</script>
<option value="230">Uganda (UGX)</option>
<script type="text/javascript"
language="JavaScript">currency_name[231]="Ukraine
Hryvna";rate[231]=10.0391;</script>
<option value="231">Ukraine (UAH)</option>

<script type="text/javascript"
language="JavaScript">currency_name[232]="United Arab Emirates
Dirhams";rate[232]=7.36992;</script>
<option value="232">United Arab Emirates (AED)</option>
<script type="text/javascript"
language="JavaScript">currency_name[233]="United Kingdom
Pounds";rate[233]=1;</script>
<option value="233" selected>United Kingdom (GBP)</option>
<script type="text/javascript"
language="JavaScript">currency_name[234]="United States
Dollars";rate[234]=2.00668;</script>
<option value="234">United States (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[235]="Uruguay
Peso";rate[235]=47.1776;</script>
<option value="235">Uruguay (UYU)</option>
<script type="text/javascript"
language="JavaScript">currency_name[236]="Uzbekistan
Som";rate[236]=2559.6;</script>

<option value="236">Uzbekistan (UZS)</option>
<script type="text/javascript"
language="JavaScript">currency_name[237]="Vanuatu
Vatu";rate[237]=194.847;</script>
<option value="237">Vanuatu (VUV)</option>
<script type="text/javascript"
language="JavaScript">currency_name[238]="Euro";rate[238]=1.47272;</script>
<option value="238">Vatican City (EUR)</option>
<script type="text/javascript"
language="JavaScript">currency_name[239]="Venezuela
Bolivares";rate[239]=4300.51;</script>
<option value="239">Venezuela (VEB)</option>
<script type="text/javascript"
language="JavaScript">currency_name[240]="Vietnam
Dong";rate[240]=32433.6;</script>
<option value="240">Vietnam (VND)</option>

<script type="text/javascript"
language="JavaScript">currency_name[242]="United States
Dollars";rate[242]=2.00668;</script>
<option value="242">Virgin Islands (USD)</option>
<script type="text/javascript"
language="JavaScript">currency_name[243]="Comptoirs Francais du
Pacifique Francs";rate[243]=175.743;</script>
<option value="243">Wallis and Futuna (XPF)</option>
<script type="text/javascript"
language="JavaScript">currency_name[244]="Yemeni
Rial";rate[244]=398.223;</script>
<option value="244">Yemen (YER)</option>
<script type="text/javascript"
language="JavaScript">currency_name[245]="Zambia
Kwacha";rate[245]=8051.55;</script>
<option value="245">Zambia (ZMK)</option>
<script type="text/javascript"
language="JavaScript">currency_name[246]="Zimbabwe
Dollar";rate[246]=500.709;</script>

<option value="246">Zimbabwe (ZWD)</option>

</select></td></tr><TR><TD align="right">Foreign currency: <span
name="forint">United Kingdom Pounds</span></TD>
<TD align="center"><input type="text" name="foreign_currency" size="10"
maxlength="10" value="100" onchange="new_forint()"></TD></TR>
<TR><TD align="right"> Sterling equivalent: Sterling</td>
<TD align="center"><input type="text" name="sterling" size="10"
maxlength="10" value="100" onchange="new_sterling()"></TD></TR>
<TR><TD align="right"> Exchange Rate: </td><td align="center"><input
type="text" name="rate" size="10" length="10" maxlength="10" value="1"
onchange="new_rate()"></TD></TR>
<TR><TD></TD><TD align="center" width="180px" height="55px"
background="../Images/Button1.gif"><b class="s3" onclick="submit_form()"
>Update Rate</b></td></TR>
</table></center><Input type="hidden" name="update" value="">
<script>new_country();</script>

</FORM>
</BODY>
</HTML>


>> I had a function which did lots of stuff incuding changing some text
>> on a screen. In IE7 it didn't work.
>
> Then something else in your code was screwing it up.
>

One hopes so, but I can't see what, or I would NOT be asking.

>> Eventually I discovered that nothing after a
>> blah.innerHTML=myvariable; command worked in that function.
>
> Then something else in your function was screwing it up.
>
>> So I put it at the end of the function, and all now works..
>
> Test page?
>

Above.

>> Q1/ Why?
>
> My stereo doesn't work. Why?
> You can't diagnose what you can't see.
>

Ok. There she is.
Works too.

>> Q2/ given a statement of the form <SPAN name="CHANGME">some
>> text</SPAN>, other than
>> getelementsByName('CHANGEME')[0].InnerHTML="MYCRAP" how else to
>> achieve the same end?
>
> Parse MYCRAP and use createTextNode and createElement.


OK I'll look into that.

The Natural Philosopher

unread,
Sep 14, 2007, 5:56:37 AM9/14/07
to
Randy Webb wrote:
> The Natural Philosopher said the following on 9/13/2007 7:18 PM:
>> I found an odd one today.
>
> An odd "what"? Please quote what you are replying to.
>
>> The innerHTML thing cause some sort of wobbly in IE7.
>
> Test page?
>

OK. You asked for it. I have tried to remove some of the less relevant
stuff.

</FORM>
</BODY>
</HTML>


>> I had a function which did lots of stuff incuding changing some text
>> on a screen. In IE7 it didn't work.
>
> Then something else in your code was screwing it up.
>

One hopes so, but I can't see what, or I would NOT be asking.

>> Eventually I discovered that nothing after a

>> blah.innerHTML=myvariable; command worked in that function.
>
> Then something else in your function was screwing it up.
>
>> So I put it at the end of the function, and all now works..
>
> Test page?
>

Above.

>> Q1/ Why?
>
> My stereo doesn't work. Why?
> You can't diagnose what you can't see.
>

Ok. There she is.
Works too.

>> Q2/ given a statement of the form <SPAN name="CHANGME">some

>> text</SPAN>, other than
>> getelementsByName('CHANGEME')[0].InnerHTML="MYCRAP" how else to
>> achieve the same end?
>
> Parse MYCRAP and use createTextNode and createElement.

Henry

unread,
Sep 14, 2007, 6:50:17 AM9/14/07
to
On Sep 14, 10:41 am, The Natural Philosopher wrote:
> Randy Webb wrote:
>> The Natural Philosopher said the following on 9/13/2007 7:18 PM:
>>> I found an odd one today.
>
> > An odd "what"? Please quote what you are replying to.
>
>>> The innerHTML thing cause some sort of wobbly in IE7.
>
>> Test page?
>
> OK. You asked for it. I have tried to remove some of the
> less relevant stuff.

Not that hard, as you have not even removed the LINK to the style
sheet.

> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<snip>


> <link rel=stylesheet href="../Styles/Style.css" type="text/css">

<snip>

Your page produces an error is shown in a browser (which is hardly
something that should be described as "some sort of wobbly"). That
error is: "document.getElementsByName(...).0 is null or not an object"
on line 51, and the line you are complaining causes the problem
reads:-

document.getElementsByName("forint")[0].innerHTML=current_currency;

- and happens to be line 51.

The minimum cut-down version of your page that demonstrates this
problem is:-

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<TITLE>Currency Converter</TITLE>

</head>
<body>

<script type="text/javascript">
function new_country(){
document.getElementsByName("forint")[0].innerHTML='nnnnn'
}
</script>

<span name="forint">United Kingdom Pounds</span>

<script>new_country();</script>

</BODY>
</HTML>

- and the problem is that SPAN elements are not defined as having NAME
attributes in (x)HTML and so trying to use - getElementsByName - to
reference a SPAN element with a (non-valid) NAME attribute should
never be expected to work in an HTML DOM, and any evidence of one or
two environments that may put up with is does not change that.

But then, given how structurally invalid your whole document is (the
SELECT element's contents are literally laughable), you should have no
expectation that anything you will work.

The Natural Philosopher

unread,
Sep 14, 2007, 7:01:11 AM9/14/07
to
Thanks for that. I can use other than a <span> statement.

> But then, given how structurally invalid your whole document is (the
> SELECT element's contents are literally laughable), you should have no
> expectation that anything you will work.

well it happens to be easier to spit that out that way in PHP that's all.

If you would care to explain why exactly the elements are so laughable,
I am always willing to learn.

This was my first ever attempt at any javascript beyond the most basic.

You might say I have less than 10 days real experience of *javascript*
programming.. ;-)


>

Randy Webb

unread,
Sep 14, 2007, 7:07:41 AM9/14/07
to
The Natural Philosopher said the following on 9/14/2007 5:56 AM:

> Randy Webb wrote:
>> The Natural Philosopher said the following on 9/13/2007 7:18 PM:
>>> I found an odd one today.
>>
>> An odd "what"? Please quote what you are replying to.
>>
>>> The innerHTML thing cause some sort of wobbly in IE7.
>>
>> Test page?
>>
>
> OK. You asked for it. I have tried to remove some of the less relevant
> stuff.

<snip>

> document.getElementsByName("forint")[0].innerHTML=current_currency;
> <THIS IS WHAT CAUSES INDIGESTION THE ROUTINE APPERAS TO DO IT, BUT FAIL
> AFTERWARDS. IF IT IS NOT THE LAST THING IN THE ROUTINE, NOTHING BEYOND
> IT GETS EXECUTED: IE7 ONLY>

That isn't IE balking on the innerHTML, it is IE not finding the span
element via getElementsByName[0]. The simplest solution is to change the
line to this:

document.getElementById('forint').innerHTML = current_currency;

And then change this:

<snip>
> <span name="forint">

To this:

<span id="forint">

And your problem is solved. Again, it isn't an issue with innerHTML at
all. You might also try validating that HTML.

>>> I had a function which did lots of stuff incuding changing some text
>>> on a screen. In IE7 it didn't work.
>>
>> Then something else in your code was screwing it up.
>>
>
> One hopes so, but I can't see what, or I would NOT be asking.

See above. It wasn't the innerHTML that was causing the error. Reading
the error message in IE would have pointed you to it though. The error
message is:

document.getElementsByName(...)[0] is null or not an object

That tells you it never made it to the innerHTML part of the statement.

>>> Q1/ Why?
>>
>> My stereo doesn't work. Why?
>> You can't diagnose what you can't see.
>>
>
> Ok. There she is.
> Works too.

What works? My stereo? Only cost me five hundred dollars but it does
work now (he wouldn't fix it without seeing it and three hundred of it
was the windows I broke with it after it was fixed).

>>> Q2/ given a statement of the form <SPAN name="CHANGME">some
>>> text</SPAN>, other than
>>> getelementsByName('CHANGEME')[0].InnerHTML="MYCRAP" how else to
>>> achieve the same end?
>>
>> Parse MYCRAP and use createTextNode and createElement.
>
>
> OK I'll look into that.

Simpler is to give it an ID and use gEBI instead and solve your problem
and make your coding easier.

Randy Webb

unread,
Sep 14, 2007, 7:14:54 AM9/14/07
to
The Natural Philosopher said the following on 9/14/2007 7:01 AM:
> Henry wrote:

<snip>

>> - and the problem is that SPAN elements are not defined as having NAME
>> attributes in (x)HTML and so trying to use - getElementsByName - to
>> reference a SPAN element with a (non-valid) NAME attribute should
>> never be expected to work in an HTML DOM, and any evidence of one or
>> two environments that may put up with is does not change that.
>>
> Thanks for that. I can use other than a <span> statement.

See my other reply for an even easier solution. Changing it to a div
element doesn't correct the error though.

>> But then, given how structurally invalid your whole document is (the
>> SELECT element's contents are literally laughable), you should have no
>> expectation that anything you will work.
>
> well it happens to be easier to spit that out that way in PHP that's all.

Just because something is easier doesn't make it the best way. Jumping
off a bridge is "easier" than paying 10 million dollars in debt.......

> If you would care to explain why exactly the elements are so laughable,
> I am always willing to learn.

Run it through the W3C validator. It is better at explaining it than I
am. Script elements are not allowed as children of an option element though.

Randy Webb

unread,
Sep 14, 2007, 7:22:51 AM9/14/07
to
The Natural Philosopher said the following on 9/14/2007 5:31 AM:
> Randy Webb wrote:

<snip>

>> Personally, I think IE5.2 on a mac has gone the way of NN4.xx where it

>> is a dead browser. It was replaced in 2003 by Safari as the default
>> Mac browser. No updates since 2000.
>> <URL: http://en.wikipedia.org/wiki/Internet_Explorer_for_Mac>
>
> IE5.2 is still the only browser that really works on a MAC OS9 machine.
>
> Whilst a small and dwindling population, there are still machines out
> there using it.

One of these days when I am sleepless and bored I will figure out a way
to incorporate IE5.2 and iCab into a general script. It isn't that hard,
it is just a matter of me deciding the best way I want to achieve it
without causing extra global variables and/or duplicate processing of
code. Both IE5.2 and iCab will execute scripts inserted with innerHMTL,
it is just a matter of adding a test for it to prevent errors.

The code is as simple as this:

innerHTMLFailed = true;
document.getElementById('someContainer').innerHTML =
'<script type="text/javascript">
innerHTMLFailed = false;
</script>'
//The above goes on one line.


if(innerHTMLFailed){
//code here to read the innerHTML, parse out the
//the script blocks and execute the scripts in them
}

The assignment to innerHMTL would either have to be after the element or
in an onload event (either window or body). I also need to re-write the
function in an order I like better with the feature testing.

The Natural Philosopher

unread,
Sep 14, 2007, 7:47:36 AM9/14/07
to
Randy Webb wrote:
> The Natural Philosopher said the following on 9/14/2007 7:01 AM:
>> Henry wrote:
>
> <snip>
>
>>> - and the problem is that SPAN elements are not defined as having NAME
>>> attributes in (x)HTML and so trying to use - getElementsByName - to
>>> reference a SPAN element with a (non-valid) NAME attribute should
>>> never be expected to work in an HTML DOM, and any evidence of one or
>>> two environments that may put up with is does not change that.
>>>
>> Thanks for that. I can use other than a <span> statement.
>
> See my other reply for an even easier solution. Changing it to a div
> element doesn't correct the error though.
>
>>> But then, given how structurally invalid your whole document is (the
>>> SELECT element's contents are literally laughable), you should have no
>>> expectation that anything you will work.
>>
>> well it happens to be easier to spit that out that way in PHP that's all.
>
> Just because something is easier doesn't make it the best way. Jumping
> off a bridge is "easier" than paying 10 million dollars in debt.......
>
>> If you would care to explain why exactly the elements are so
>> laughable, I am always willing to learn.
>
> Run it through the W3C validator. It is better at explaining it than I
> am. Script elements are not allowed as children of an option element
> though.
>
Oh. Didn't know that. well its easy enough to run the loop twice and
pull them outside it.

Thanks again.

Edmund Maruhn

unread,
Sep 12, 2013, 11:53:59 AM9/12/13
to
A bit old this thread but someone may find this useful.
Today I found the loadHTMLFragment function here and tried to add it into a project. After integration an exception was raised by the function when it attempts to remove the old script children.
I tweaked it a bit and now it has two improvements:

1. The exception has gone
2. Each script element becomes integrated at the exact same place as the old one was placed in the structure. Means you will get the same sub-tree as before. The previous version (at the beginning of the thread) added all scripts at the end of the element indicated by the element-id passed in to the function.

Maybe this has been solved already by someone before my post here. However, here is my solution:

function loadHTMLFragment(elementId, fragment)
{
if (document &&
document.getElementById &&
document.getElementById(elementId) &&
document.createElement &&
document.appendChild &&
document.getElementsByTagName) {

var element = document.getElementById(elementId)
// &nbsp; forces IE to process script elements if the first node
// is a script element
element.innerHTML = "&nbsp;" + fragment;


var scriptChildren = element.getElementsByTagName('script');
var length = scriptChildren.length;
var scripts = [],
newScript,
oldScript;

for (var scriptIndex = 0; scriptIndex < length; ++scriptIndex) {
oldScript = scriptChildren[scriptIndex];

newScript = document.createElement('script');
newScript.type = "text/javascript";
newScript.text = oldScript.text;
scripts.push({
oldScript: oldScript,
newScript: newScript
});
}
/*
function getChildIndex(child) {
var index = 1;
while (node = node.previousSibling) {
if (node.nodeType === 1) {
index++;
}
}
return index;
}
*/
var parent,
current,
before,
length = scripts.length;

for (var scriptIndex = 0; scriptIndex < length; ++scriptIndex) {
current = scripts[scriptIndex];
parent = current.oldScript.parentNode;
before = current.oldScript.nextSibling;
parent.removeChild(current.oldScript);
parent.insertBefore(current.newScript, before);
}
}
}

Thomas 'PointedEars' Lahn

unread,
Sep 12, 2013, 12:24:32 PM9/12/13
to
Edmund Maruhn wrote:

> A bit old this thread

“A bit old” indeed – it is from 2007, so hardly relevant in 2013. A lot has
changed in the meantime. Only Google Groups users would see it because
Google Groups is (based on) a Usenet archive, and it is FUBAR on top of
that. Please either do not use it or tell Google to fix it. TIA.

> […]
> Maybe this has been solved already by someone before my post here.

Maybe, during those 6 years.

> However, here is my solution:
>
> function loadHTMLFragment(elementId, fragment)
> {
> if (document &&
> document.getElementById &&

This (type-converting a host object's method) will break in not that recent
IE/MSHTMLs.

> document.getElementById(elementId) &&
> document.createElement &&

Same here.

> document.appendChild &&
> document.getElementsByTagName) {

And here. Consider jsx.object.isHostMethod() and the like instead:

<http://PointedEars.de/wsvn/JSX/trunk/object.js>

Your code does not appear to solve a real problem, let alone the unreal
problem the OP had 6 years(!) ago.

--
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Evertjan.

unread,
Sep 12, 2013, 2:31:39 PM9/12/13
to
Thomas 'PointedEars' Lahn wrote on 12 sep 2013 in comp.lang.javascript:

> Your code does not appear to solve a real problem, let alone the unreal
> problem the OP had 6 years(!) ago.

if (Javascript && beginnersLuck)
alert('Works!')
else
alert('Not!');

// ;-(

--
Evertjan.
The Netherlands.
(Please change the x'es to dots in my emailaddress)
0 new messages