Javascript in an HTML table

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • James Kimble

    Javascript in an HTML table



    Yeah I'm sure this is a stupid question.

    I've got a javascript source file with functions (creates a bar graph)
    I want to call from inside an html table cell so that the graph
    appears in the cell. I've tried a bunch of different things but I'm
    not getting it. I'm a newbee to both html and javascript so be kind.

    Any example would be appreciated.


    My current attempt looks like:

    <head>
    <script language="JavaS cript" src="bargraph.j s"></script>
    <script language="JavaS cript">
    function createBarGraph( ) {
    graph = new BarGraph("Horiz Bar");
    graph.values = "1000";
    document.write( graph.create()) ;
    }
    </script>
    </head>
    <body onLoad="createB arGraph()">
    <table width="100%" border="0">
    <tr>
    <td>HPX40</td>
    <td>CUSTOMER DEFINED TEXT </td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>Plate Status:</td>
    <td><form name="f1" action="javascr ipt:createBarGr aph()"
    method="post"></td>
    <td>40.5KW</td>
    </tr>
    </table>
    </body>

    This just displays my graph by itself. No other table items appear.

  • Jeremy J Starcher

    #2
    Re: Javascript in an HTML table

    On Thu, 05 Jun 2008 10:12:32 -0700, James Kimble wrote:
    Yeah I'm sure this is a stupid question.
    >
    I've got a javascript source file with functions (creates a bar graph) I
    want to call from inside an html table cell so that the graph appears in
    the cell. I've tried a bunch of different things but I'm not getting it.
    I'm a newbee to both html and javascript so be kind.
    >
    Any example would be appreciated.
    >
    >
    My current attempt looks like:
    >
    <head>
    <script language="JavaS cript" src="bargraph.j s"></script>
    <script language="JavaS cript">
    function createBarGraph( ) {
    graph = new BarGraph("Horiz Bar");
    graph.values = "1000";
    document.write( graph.create()) ;
    }
    </script>
    </head>
    <body onLoad="createB arGraph()">
    <table width="100%" border="0">
    <tr>
    <td>HPX40</td>
    <td>CUSTOMER DEFINED TEXT </td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td>Plate Status:</td>
    <td><form name="f1" action="javascr ipt:createBarGr aph()"
    method="post"></td>
    <td>40.5KW</td>
    </tr>
    </table>
    </body>
    >
    This just displays my graph by itself. No other table items appear.
    This is correct, though unexpected, behavior.

    If you call "document.write " WHILE THE PAGE IS LOADING, then it will kind
    of 'slip' stuff into your web page.

    However, you are calling it AFTER the page has loaded, which will REPLACE
    the contents of your page with the new information. Many folks consider
    document.write problematic at best recommend avoiding it.

    In addition, the coding style that you are using is very obsolete. You
    might want to consider reading this:

    <URL: http://www.mopedepot.com/jjs/HowToRe...criptCode.html >

    Comment

    • James Kimble

      #3
      Re: Javascript in an HTML table


      Ok, but what would be the correct way to do this (ie. show the table
      with the graph in it)?


      On Jun 5, 2:00 pm, Jeremy J Starcher <r3...@yahoo.co mwrote:
      On Thu, 05 Jun 2008 10:12:32 -0700, James Kimble wrote:
      Yeah I'm sure this is a stupid question.
      >
      I've got a javascript source file with functions (creates a bar graph) I
      want to call from inside an html table cell so that the graph appears in
      the cell. I've tried a bunch of different things but I'm not getting it.
      I'm a newbee to both html and javascript so be kind.
      >
      Any example would be appreciated.
      >
      My current attempt looks like:
      >
      <head>
      <script language="JavaS cript" src="bargraph.j s"></script>
      <script language="JavaS cript">
      function createBarGraph( ) {
      graph = new BarGraph("Horiz Bar");
      graph.values = "1000";
      document.write( graph.create()) ;
      }
      </script>
      </head>
      <body onLoad="createB arGraph()">
      <table width="100%" border="0">
      <tr>
      <td>HPX40</td>
      <td>CUSTOMER DEFINED TEXT </td>
      <td</td>
      </tr>
      <tr>
      <td>Plate Status:</td>
      <td><form name="f1" action="javascr ipt:createBarGr aph()"
      method="post"></td>
      <td>40.5KW</td>
      </tr>
      </table>
      </body>
      >
      This just displays my graph by itself. No other table items appear.
      >
      This is correct, though unexpected, behavior.
      >
      If you call "document.write " WHILE THE PAGE IS LOADING, then it will kind
      of 'slip' stuff into your web page.
      >
      However, you are calling it AFTER the page has loaded, which will REPLACE
      the contents of your page with the new information. Many folks consider
      document.write problematic at best recommend avoiding it.
      >
      In addition, the coding style that you are using is very obsolete. You
      might want to consider reading this:
      >
      <URL:http://www.mopedepot.c om/jjs/HowToRecognizeB adJavascriptCod e.html>

      Comment

      • Thomas 'PointedEars' Lahn

        #4
        Re: Javascript in an HTML table

        James Kimble wrote:
        On Jun 6, 6:20 pm, Jeremy J Starcher <r3...@yahoo.co mwrote:
        >On Fri, 06 Jun 2008 09:58:15 -0700, James Kimble wrote:
        >>Ok, but what would be the correct way to do this (ie. show the table
        >>with the graph in it)?
        >The correct way would be to use the DOM methods to create elements and
        >insert them into the document, or to create the graph server-side.
        >>
        ><URL:http://www.quirksmode. org/dom/intro.html>
        >>
        >you might also get away with using innerHTML, but I have been getting
        >away from that.
        >
        Not big on examples are ya.....
        Usenet is not a right.
        [...]
        This seems like it should be a "really" simple thing to do and yes,
        How could you even know?
        I'm being lazy about learning the languages because I don't use them
        and never intend to use them much (I work in C and Java mostly in the
        embedded environment).
        But with this attitude you are not likely to get a straight answer out of
        anyone who can be taken seriously around here because it is like asking them
        to do your homework in their leisure time for free. You are looking for
        someone who you can pay for the answer instead.

        See also:





        PointedEars
        --
        var bugRiddenCrashP ronePieceOfJunk = (
        navigator.userA gent.indexOf('M SIE 5') != -1
        && navigator.userA gent.indexOf('M ac') != -1
        ) // Plone, register_functi on.js:16

        Comment

        • Tom de Neef

          #5
          Re: Javascript in an HTML table

          "James Kimble" <jkimble@one.ne tschreef in bericht
          news:5d5768f7-bf04-4d80-b5ab-53c372b26b85@25 g2000hsx.google groups.com...
          >
          >
          Yeah I'm sure this is a stupid question.
          There are no stupid questions. There are only stupid answers.
          >
          I've got a javascript source file with functions (creates a bar graph)
          I want to call from inside an html table cell so that the graph
          appears in the cell. I've tried a bunch of different things but I'm
          not getting it. I'm a newbee to both html and javascript so be kind.
          >
          Any example would be appreciated.
          >
          >
          My current attempt looks like:
          >
          <head>
          <script language="JavaS cript" src="bargraph.j s"></script>
          <script language="JavaS cript">
          function createBarGraph( ) {
          graph = new BarGraph("Horiz Bar");
          graph.values = "1000";
          document.write( graph.create()) ;
          }
          </script>
          </head>
          <body onLoad="createB arGraph()">
          <table width="100%" border="0">
          <tr>
          <td>HPX40</td>
          <td>CUSTOMER DEFINED TEXT </td>
          <td>&nbsp;</td>
          </tr>
          <tr>
          <td>Plate Status:</td>
          <td><form name="f1" action="javascr ipt:createBarGr aph()"
          method="post"></td>
          <td>40.5KW</td>
          </tr>
          </table>
          </body>
          >
          This just displays my graph by itself. No other table items appear.
          >
          Some suggestions:
          <head>
          <script type="text/JavaScript" src="bargraph.j s"></script>
          function createBarGraph( ) {
          graph = new BarGraph("Horiz Bar");
          graph.values = "1000";
          return graph.create()
          }
          </script>
          </head>

          Chech the <scripttag for its attributes
          document.write removed. Its intention is to replace the current page. That
          is not what you want. The function now returns the (html) string produced by
          graph.create(). At least I guess that's what graph.create() will return.
          But you need more: you want to place this text inside a table cell.
          Conceptually, the html - as a string - would read like this:
          '<td>'+createBa rGraph()+'</td>'. You can make this happen if you can
          identify the table cell. So, give it an ID, like
          <table>
          <tr>
          <tdPlate Status:</td>
          <td id=graphcell</td>
          <td>40.5KW</td>
          </tr>
          </table>
          That cell will be empty when loaded. In the onLoad handler you now call
          script code that will fill the cell with your graph.
          I.e. you could do with another function within your script:
          function placeGraph(id)
          { var cell = document.getEle mentById(id)
          cell.innerHTML = createBarGraph( )
          }

          and with
          <body onLoad="placeGr aph('graphcell' )">
          it should work.

          Of course, you can combine these things and use
          <body
          onLoad="documen t.getElementByI d(graphcell).in nerHTML=createB arGraph()">
          and do without the extra function if you really want to push your code on
          the track of unmaintainabili ty.
          Tom


          Comment

          • Thomas 'PointedEars' Lahn

            #6
            Re: Javascript in an HTML table

            Tom de Neef wrote:
            "James Kimble" <jkimble@one.ne tschreef in bericht
            >Yeah I'm sure this is a stupid question.
            There are no stupid questions. There are only stupid answers.
            Such as yours?
            >[...]
            >This just displays my graph by itself. No other table items appear.
            >
            Some suggestions:
            <head>
            <script type="text/JavaScript" src="bargraph.j s"></script>
            The <script ...tag that was in the original code is missing here.
            function createBarGraph( ) {
            graph = new BarGraph("Horiz Bar");
            `graph' should be declared a variable, globally if used outside of
            createBarGraph( ), locally if not.

            // global declaration
            var graph;

            or

            // local declaration and initialization;
            var graph = new BarGraph(...);
            graph.values = "1000";
            return graph.create()
            The trailing `;' is missing; it is optional here, but recommended.
            }
            </script>
            </head>
            >
            Chech the <scripttag for its attributes
            You should be more precise and more verbose about your suggestions. The
            point here is that the `type' attribute is required for the `script'
            _element_, and it was not provided yet which renders the markup invalid.
            document.write removed. Its intention is to replace the current page.
            There is no intention of a method in itself; *people* have intentions. What
            document.write( ) does, however, depends on where and when it is used, as
            already explained before. (Please try to read all accessible postings of a
            thread before you are posting late to it.)
            That is not what you want.
            True.
            The function now returns the (html) string produced by
            graph.create(). At least I guess that's what graph.create() will return.
            But this is the major problem with this question. One can only guess
            because the OP is not verbose enough.
            [...]
            <td id=graphcell</td>
            All attribute values should be quoted.
            [...]
            That cell will be empty when loaded. In the onLoad handler you now call
            script code that will fill the cell with your graph.
            I.e. you could do with another function within your script:
            function placeGraph(id)
            { var cell = document.getEle mentById(id)
            cell.innerHTML = createBarGraph( )
            }
            >
            and with
            <body onLoad="placeGr aph('graphcell' )">
            it should work.
            However, without further feature tests this is just a big overhead.
            Of course, you can combine these things and use
            <body
            onLoad="documen t.getElementByI d(graphcell).in nerHTML=createB arGraph()">
            Needs to be

            onLoad="documen t.getElementByI d('graphcell'). innerHTML=creat eBarGraph()">

            for a remote chance of working. However, it would be better if
            createBarGraph( ) and consequently graph.create() returned a reference to a
            DOM Node object so that it can be inserted as child node of the element node
            referred to by the equivalent of document.getEle mentById('graph cell'), and
            maybe replace existing child nodes. (Maybe this is already the case so that
            it could not be done by the OP without learning about DOM mutator methods.)
            and do without the extra function if you really want to push your code on
            the track of unmaintainabili ty.
            With your approach it is on that track already.


            PointedEars
            --
            Prototype.js was written by people who don't know javascript for people
            who don't know javascript. People who don't know javascript are not
            the best source of advice on designing systems that use javascript.
            -- Richard Cornford, cljs, <f806at$ail$1$8 300dec7@news.de mon.co.uk>

            Comment

            • Thomas 'PointedEars' Lahn

              #7
              Re: Javascript in an HTML table

              [previous posting superseded in the face of new evidence]

              Tom de Neef wrote:
              "James Kimble" <jkimble@one.ne tschreef in bericht
              >Yeah I'm sure this is a stupid question.
              There are no stupid questions. There are only stupid answers.
              Such as yours?
              [...]
              This just displays my graph by itself. No other table items appear.
              >
              Some suggestions:
              <head>
              <script type="text/JavaScript" src="bargraph.j s"></script>
              The <script ...tag that was in the original code is missing here.
              function createBarGraph( ) {
              graph = new BarGraph("Horiz Bar");
              `graph' should be declared a variable, globally if used outside of
              createBarGraph( ), locally if not.

              // global declaration
              var graph;

              or

              // local declaration and initialization
              var graph = new BarGraph(...);
              graph.values = "1000";
              return graph.create()
              The trailing `;' is missing; it is optional here, but recommended.
              }
              </script>
              </head>
              >
              Chech the <scripttag for its attributes
              You should be more precise and more verbose about your suggestions. The
              point here is that the `type' attribute is required for the `script'
              _element_, and it was not provided yet which renders the markup invalid.
              document.write removed. Its intention is to replace the current page.
              There is no intention of a method in itself; *people* have intentions. What
              document.write( ) does, however, depends on where and when it is used, as
              already explained before. (Please try to read all accessible postings of a
              thread before you are posting late to it.)
              That is not what you want.
              True.
              [...]
              <td id=graphcell</td>
              All attribute values should be quoted.
              [...]
              That cell will be empty when loaded. In the onLoad handler you now call
              script code that will fill the cell with your graph.
              I.e. you could do with another function within your script:
              function placeGraph(id)
              { var cell = document.getEle mentById(id)
              cell.innerHTML = createBarGraph( )
              }
              >
              and with
              <body onLoad="placeGr aph('graphcell' )">
              it should work.
              However, without further feature tests this is just a big overhead.
              Of course, you can combine these things and use
              <body
              onLoad="documen t.getElementByI d(graphcell).in nerHTML=createB arGraph()">
              Needs to be

              onLoad="documen t.getElementByI d('graphcell'). innerHTML=creat eBarGraph()">

              for a remote chance of working. (However, it would be better if
              createBarGraph( ) and consequently graph.create() returned a reference to a
              DOM Node object so that it can be inserted as child node of the element node
              referred to by the equivalent of document.getEle mentById('graph cell'), and
              maybe replace existing child nodes. It could not be done by the OP without
              learning about DOM mutator methods.)
              and do without the extra function if you really want to push your code
              on the track of unmaintainabili ty.
              With your code it is on that track already.


              PointedEars
              --
              Prototype.js was written by people who don't know javascript for people who
              don't know javascript. People who don't know javascript are not the best
              source of advice on designing systems that use javascript.
              -- Richard Cornford, cljs, <f806at$ail$1$8 300dec7@news.de mon.co.uk>

              Comment

              • Lasse Reichstein Nielsen

                #8
                Re: Javascript in an HTML table

                James Kimble <jkimble@one.ne twrites:
                I've got a javascript source file with functions (creates a bar graph)
                I want to call from inside an html table cell so that the graph
                appears in the cell.
                ....
                <head>
                <script language="JavaS cript" src="bargraph.j s"></script>
                Replace language="JavaS cript" with type="text/javascript" to get
                valid HTML (the type attribute is required, the language attribute
                is irrelevant and deprecated).
                <script language="JavaS cript">
                function createBarGraph( ) {
                graph = new BarGraph("Horiz Bar");
                graph.values = "1000";
                document.write( graph.create()) ;
                }
                </script>
                </head>
                <body onLoad="createB arGraph()">
                As others have said, this does document.write when the page has finished
                loaded, and the document has been closed. Which means that it replaces
                the curren document instead of appending to it.
                So don't call it here.
                <table width="100%" border="0">
                <tr>
                <td>HPX40</td>
                <td>CUSTOMER DEFINED TEXT </td>
                <td>&nbsp;</td>
                </tr>
                <tr>
                <td>Plate Status:</td>
                <td><form name="f1" action="javascr ipt:createBarGr aph()"
                method="post"></td>
                If you just want to put the bar graph here when the page is loading,
                you should just call your function:

                <td><script type="text/javascript">
                createBarGraph( );
                </script>

                That will call document.write to insert HTML into the page just after
                the script element.

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

                Comment

                • James Kimble

                  #9
                  Re: Javascript in an HTML table

                  a) Since I can't see ANY of the code that actually draws your graph,
                  there is no way that I could have provided an example.
                  I understand that
                  b) There was no "short" answer to your question and the long answer was
                  "Learn about this topic." I provided two terms "DOM methods" and
                  "innerHTML" with a link that would get you started.
                  Right, but I wasn't looking for the long answer. I was looking for a
                  simple example. A
                  simple example was possible because one is posted above.
                  I'm really just trying to throw something together. Getting it done in
                  the purest form of correctness is not required or even particularly
                  desirable because this is to be a rough demo. Not a finished product.
                  >
                  It is possibly that using innerHTML would do what you would like, but
                  again, without seeing the chart-rendering code I don't know.
                  An easier way was listed above.
                  So I guess I'll go to the book store and do a little reading. I do
                  appreciate your guidance but I was really just looking for a simple "do
                  this" type response to the snippet of code I posted.
                  >
                  As much as I dislike it (and the problems it has) did you even look up
                  the "innerHTML" that I mentioned?
                  >
                  No but I appreciate the suggestion and I will take a look at that
                  method.
                  Thank you anyway.....
                  >
                  De Nad
                  Not sure why this got so undy bunching. It was a simple question with
                  a simple
                  answer. I do appreciate the help though.

                  Comment

                  Working...