Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Javascript (http://www.velocityreviews.com/forums/f68-javascript.html)
-   -   setting text, change the font (http://www.velocityreviews.com/forums/t873953-setting-text-change-the-font.html)

Mr. x 11-19-2003 12:42 AM

setting text, change the font
 
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 :)



Lasse Reichstein Nielsen 11-19-2003 01:31 AM

Re: setting text, change the font
 
"Mr. x" <a@b.com> writes:

> 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").chil dNodes[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
---


/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'


All times are GMT. The time now is 03:07 AM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.