setting text, change the font

Discussion in 'Javascript' started by Mr. x, Nov 19, 2003.

  1. Mr. x

    Mr. x Guest

    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 :)
     
    Mr. x, Nov 19, 2003
    #1
    1. Advertising

  2. "Mr. x" <> 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").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
    ---


    /L
    --
    Lasse Reichstein Nielsen -
    DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
    'Faith without judgement merely degrades the spirit divine.'
     
    Lasse Reichstein Nielsen, Nov 19, 2003
    #2
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Karl Hungus

    Font class, external font files question

    Karl Hungus, Feb 4, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    549
    Karl Hungus
    Feb 4, 2004
  2. =?Utf-8?B?Tmlja3k=?=
    Replies:
    2
    Views:
    725
    Matt Berther
    Feb 20, 2005
  3. gino
    Replies:
    3
    Views:
    4,017
    Mike Smith
    Jul 11, 2004
  4. Tom Van Overbeke
    Replies:
    2
    Views:
    580
    Robrecht Jacques
    Jul 11, 2003
  5. mttc
    Replies:
    2
    Views:
    2,424
    Roedy Green
    Jul 3, 2009
Loading...

Share This Page