Newbie help with page translation

C

coz

I'm after a little help with a problem I'm been trying to solve for a
few days.

I need to be able to add text to a page at given points (eventually
from an external javascript file). The major problem is that there is
to be no server-side processing as this could be run from the likes of
a CD.

I wish to use an external file so a translator can translate page text
without messing with the page code. So, I'm trying a simple example
such as :

-------------code----------
<script language="JavaScript" type="text/javascript">
<!--
var wordsArray = new Array();
wordsArray[0] = 'Hello';
wordsArray[1] = 'World';

function rewritePage() {
docWords = document.getElementsByTagName("word");
alert(docWords.length);
for (idx=0; idx<docWords.length; idx++)
{
wordNum = docWords[idx].id;
alert(wordNum);
alert(docWords[idx].type);
docWords[idx].innerHTML = wordsArray[wordNum];
}
}
-->
</script>
</head>
<body onLoad="rewritePage()">
<p>Word 1 = <word id="0">bye</word></p>
<p>Word 2 = <word id="1">moon</word></p>
</body>
</html>
--------end code-------
I think the fact that getElementsByTagName returns a collection has got
me really confused.

This only really has to work in IE (unfortunately). The current code
above alerts "2", "0", "undefined","1","undefined" and changes the text
correctly in Firefox but IE aborts after the first "undefined" with
"Undefined Runtime error", which is rather helpful ;-). Is there a
better method someone can suggest?

Feel free to tell me I'm trying to do the impossible, I'd quite
understand.

TIA

Coz
 
E

Evertjan.

coz wrote on 05 nov 2006 in comp.lang.javascript:
-------------code----------
<script language="JavaScript" type="text/javascript">

do not use: language="JavaScript"

do not use: <!--
var wordsArray = new Array();
wordsArray[0] = 'Hello';
wordsArray[1] = 'World';

function rewritePage() {
docWords = document.getElementsByTagName("word");

use var where apropriate.

Do not use indenting tab's on usenet, use 2 or 3 spaces.
alert(docWords.length);
for (idx=0; idx<docWords.length; idx++)
{
wordNum = docWords[idx].id;
alert(wordNum);
alert(docWords[idx].type);

use typeOf, don't invent functions.
docWords[idx].innerHTML = wordsArray[wordNum];

<word> has no innerHTML, don't invent tags.

The rewriting only occurs after the script has ended.

do not use: -->
</script>
</head>
<body onLoad="rewritePage()">
<p>Word 1 = <word id="0">bye</word></p>

id should always start with a letter.
<p>Word 2 = <word id="1">moon</word></p>

id should always start with a letter.
</body>
</html>
--------end code-------

<script type="text/javascript">
var wordsArray = ['Hello','World'];

function rewritePage() {
var container = document.getElementById('container')
var docWords = container.getElementsByTagName("span");
alert(docWords.length);
for (var i=0; i<docWords.length; i++) {
wordNum = +docWords.id.substr(1,7);
alert(wordNum);
alert(typeof docWords);
docWords.innerHTML = wordsArray[wordNum];
}
}
</script>
</head>

<body onLoad="rewritePage()">
<span id="zz">Not contained span</span>
<div id = 'container'>
<p>Word 1 = <span id="w0">bye</span></p>
<p>Word 2 = <span id="w1">moon</span></p>
</div>
</body>
 
C

coz

Evertjan. wrote:


<script type="text/javascript">
var wordsArray = ['Hello','World'];

function rewritePage() {
var container = document.getElementById('container')
var docWords = container.getElementsByTagName("span");
alert(docWords.length);
for (var i=0; i<docWords.length; i++) {
wordNum = +docWords.id.substr(1,7);
alert(wordNum);
alert(typeof docWords);
docWords.innerHTML = wordsArray[wordNum];
}
}
</script>
</head>

<body onLoad="rewritePage()">
<span id="zz">Not contained span</span>
<div id = 'container'>
<p>Word 1 = <span id="w0">bye</span></p>
<p>Word 2 = <span id="w1">moon</span></p>
</div>
</body>


Thank you Evertjan, guess I really showed my lack of knowledge there
huh?

Anyway, a few lessons learnt, thanks again.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top