setting text, change the font

M

Mr. x

Hello,

Suppose I have a table like this :

<table width = "580">
<tr align = "right" width = 760>
<td id = "current_page_inner">
<font size="4" color="lightgreen" face="arial"><b><i>
abc
</i></b>
</font>
</td>
</tr>
</table>

....
if I do in code :
current_page_inner.children(0).innerText = "bcd"
the text is changed to the new text,
and the font doesn't change,
but the font is not italic and not bold as the original.
Why ?

Thanks :)
 
L

Lasse Reichstein Nielsen

Mr. x said:
Suppose I have a table like this :

<table width = "580">
<tr align = "right" width = 760>
<td id = "current_page_inner">
<font size="4" color="lightgreen" face="arial"><b><i>
abc
</i></b>

I recommend against using the font, b and i tags. Use CSS to get
the same effect, that is what it was invented for.
</font>
</td>
</tr>
</table>
...
if I do in code :
current_page_inner.children(0).innerText = "bcd"

Amazing, out of the three parts of the expression on the left of
the equal sign, all are IE-specific and won't work in Mozilla.

It is bad style to refer to an element by using its name as a global
variable (bad style, and not likely to work in many browsers, including
Mozilla).
Use the W3C DOM method "getElementById" instead:
document.getElementById("current_page_inner")

The children collection is not standard code. Again, it probably works
in IE, but doesn't in Mozilla/Netscape 6+. Use the W3C DOM "childNodes"
collection instead:

document.getElementById("current_page_inner").childNodes[0]

Likewise "innerText" is a proprietary MS property that doesn't work in
Mozilla. The W3C method isn't as short, so I won't show it here.
the text is changed to the new text,
and the font doesn't change,
but the font is not italic and not bold as the original.
Why ?

Because the first child of the element named current_page_inner is the
font tag (in IE, in Mozilla it is a text node containing the newline
between the td and the font elements). You set the innerText of the
font tag to "bcd". That clears *all* the content of the font tag and
adds a single text node with the text "bcd".

It is equal to this W3C DOM code (ok, I will show it here :)

---
var elem = document.getElementById("current_page_inner").
getElementsByTagName("*")[0]; // first non-text-node
while (elem.hasChildNodes()) { // remove content
elem.removeChild(elem.lastChild);
}
elem.appendChild(document.createTextNode("bcd")); // add new content
 

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,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top