'Value' is null or not is object.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • viki1967
    Contributor
    • Oct 2007
    • 263

    'Value' is null or not is object.

    HI there.

    This code responds with error:

    Code:
    <script language="javascript" type="text/javascript">
    <!--
    
    function calcola(frmObj, id)
    {
    
    var Tot_competenze = 0;
    var nelementi = document.getElementById("table3").rows.length-2;
    
    for ( var n = 1; n <= nelementi; n++ )
    
        {
            x = parseFloat(frmObj["CompetenzeExtra-" + n].value);
            Tot_competenze += ((isNaN(x))?0:x);
        } 
        
         alert("CompetenzeExtra-" + id)
         alert(Tot_competenze)
        
    
        frmObj.Tot_competenze.value = Tot_competenze.toFixed(2);  
        
      
    }
    // -->
    </script>
    
    <table border="0" id="table3">
    
    <input type="text" name="CompetenzeExtra-10" size="10" value="350.5" readonly style="background-color: #C0C0C0" onkeyup="calcola(this.form, 10)">
    
    <input type="text" name="Tot-competenze" size="10" value="0.00" style="text-align: left" readonly style="background-color: #C0C0C0">

    The error is:

    Code:
    x = parseFloat(frmObj["CompetenzeExtra-" + n].value);
    'Value' is null or not is object.

    Can anyone help?

    Thanks, regards

    Viki1967
  • Ferris
    New Member
    • Oct 2007
    • 101

    #2
    Could you post your code completely? at least let me see your form element.

    Comment

    • viki1967
      Contributor
      • Oct 2007
      • 263

      #3
      OK, thanks:

      Comment

      • Logician
        New Member
        • Feb 2007
        • 210

        #4
        Originally posted by viki1967
        I don't get an error. What user-action makes it fail?

        Comment

        • Ferris
          New Member
          • Oct 2007
          • 101

          #5
          Originally posted by viki1967

          sorry,I still don't understand what you want to do.

          Comment

          • viki1967
            Contributor
            • Oct 2007
            • 263

            #6
            Hi, this code not working:

            [code=html]
            <html>

            <head>

            <script language="javas cript" type="text/javascript">
            <!--

            function calcola(frmObj)
            {
            var Tot_competenze = 0;

            for ( var n = 1 ; n <= 10 ; n++ )
            {
            x = parseFloat(frmO bj["CompetenzeExtr a-" + n].value);
            Tot_competenze += ((isNaN(x)) ? 0 : x);
            }

            frmObj.Tot_comp etenze.value = Tot_competenze. toFixed(2);
            }
            // -->

            </script>

            <body>

            <form>
            <input type="text" name="Competenz eExtra-1" size="10" onkeyup="calcol a(this.form)">
            <input type="text" name="Competenz eExtra-2" size="10" onkeyup="calcol a(this.form)">
            <input type="text" name="Competenz eExtra-9" size="10" onkeyup="calcol a(this.form)">
            <input type="text" name="Competenz eExtra-10" size="10" onkeyup="calcol a(this.form)">

            <input type="text" name="Tot_compe tenze" size="10" value="0.00" style="text-align: left" readonly>
            </form>

            </body>

            </html>
            [/code]
            Last edited by gits; Dec 9 '07, 11:08 AM. Reason: fix code tags

            Comment

            • Ferris
              New Member
              • Oct 2007
              • 101

              #7
              Hi
              I fixed your code. Is this you want?

              [HTML]
              <html>
              <head>
              <script language="javas cript" type="text/javascript">
              <!--
              function calcola(frmObj)
              {
              var Tot_competenze = 0;
              for ( var n = 1 ; n <= 10 ; n++ )
              {
              var text = frmObj["CompetenzeExtr a-" + n];
              if (text){
              x = parseFloat(text .value);
              Tot_competenze += ((isNaN(x)) ? 0 : x);
              }
              }
              frmObj.Tot_comp etenze.value = Tot_competenze. toFixed(2);
              }
              // -->
              </script>
              <body>
              <form>
              <input type="text" name="Competenz eExtra-1" size="10" onkeyup="calcol a(this.form)">
              <input type="text" name="Competenz eExtra-2" size="10" onkeyup="calcol a(this.form)">
              <input type="text" name="Competenz eExtra-9" size="10" onkeyup="calcol a(this.form)">
              <input type="text" name="Competenz eExtra-10" size="10" onkeyup="calcol a(this.form)">
              <input type="text" name="Tot_compe tenze" size="10" value="0.00" style="text-align: left" readonly>
              </form>
              </body>
              </html>
              [/HTML]

              Comment

              • viki1967
                Contributor
                • Oct 2007
                • 263

                #8
                Many thanks, yes this I want.

                But this form is dynamic and frmObj["TotaleCompeten zeExtra-" + id].value it doesn't perform sum :

                [HTML]

                function calcola(frmObj)
                {
                var frmObj["TotaleCompeten zeExtra-" + id].value = 0;
                for ( var n = 1 ; n <= 10 ; n++ )
                {
                var text = frmObj["CompetenzeExtr a-" + n];
                if (text){
                x = parseFloat(text .value);
                frmObj["TotaleCompeten zeExtra-" + id].value += ((isNaN(x)) ? 0 : x);
                }
                }

                frmObj["TotaleCompeten zeExtra-" + id].value = frmObj["TotaleCompeten zeExtra-" + id].value.toFixed( 2);


                [/HTML]

                Comment

                • Ferris
                  New Member
                  • Oct 2007
                  • 101

                  #9
                  Hi

                  Maybe this is what you want,but I'm not sure,because I think you didn't make it clear.

                  [HTML]
                  <html>
                  <head>
                  <script language="javas cript" type="text/javascript">
                  <!--

                  function calcola(frmObj, id)
                  {
                  var output = frmObj["TotaleCompeten zeExtra-" + id];
                  if (output){
                  output.value = 0;
                  for ( var n = 1 ; n <= 10 ; n++ )
                  {
                  var text = frmObj["CompetenzeExtr a-" + n];
                  if (text){
                  x = parseFloat(text .value);
                  output.value = parseFloat(outp ut.value) + ((isNaN(x)) ? 0 : x);
                  }
                  }
                  output.value = parseFloat(outp ut.value).toFix ed(2);
                  }
                  }
                  -->
                  </script>
                  <body>
                  <form>
                  <input type="text" name="Competenz eExtra-1" size="10" onKeyUp="calcol a(this.form,1); ">
                  <input type="text" name="Competenz eExtra-2" size="10" onKeyUp="calcol a(this.form,1); ">
                  <input type="text" name="Competenz eExtra-9" size="10" onKeyUp="calcol a(this.form,1); ">
                  <input type="text" name="Competenz eExtra-10" size="10" onKeyUp="calcol a(this.form,1); ">
                  <input type="text" name="TotaleCom petenzeExtra-1" size="10" value="0.00" style="text-align: left" readonly>
                  </form>
                  </body>
                  </html>
                  [/HTML]

                  Comment

                  • viki1967
                    Contributor
                    • Oct 2007
                    • 263

                    #10
                    Thanks.

                    I'm sorry for my English. :(

                    This page is published and available here:
                    Link

                    I have to change the column "Totale Competenze extra" in the line that contains value 421.26, that it is the sum of the "Competenze extra" of all the records extracted by the table mysql with a query.

                    I have to change only that box, that is contains value 412.26, bringing in it the sum of all the drawn out lines, in case of changes.

                    Comment

                    • Ferris
                      New Member
                      • Oct 2007
                      • 101

                      #11
                      Hi

                      You just put "}" in the wrong place.(Line 26 in your page)

                      here's the complete code.

                      [HTML]
                      <html>
                      <head>
                      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
                      <title>Modifica </title>
                      <script language="javas cript" type="text/javascript">
                      <!--

                      function calcola(frmObj, id)
                      {
                      frmObj["CompetenzeExtr a-" + id].value = parseFloat(frmO bj["ImportoBas e-" + id].value) * parseFloat(frmO bj["NumeroOre-" + id].value);
                      frmObj["CompetenzeExtr a-" + id].value = parseFloat(frmO bj["CompetenzeExtr a-" + id].value).toFixed (2);
                      frmObj["TrattenuteExtr a-" + id].value = parseFloat(frmO bj["ImportoBaseTra ttenute-" + id].value) * parseFloat(frmO bj["NumeroOreTratt enute-" + id].value);
                      frmObj["TrattenuteExtr a-" + id].value = parseFloat(frmO bj["TrattenuteExtr a-" + id].value).toFixed (2);
                      var output = frmObj["TotaleCompeten zeExtra-" + id];
                      if (output){
                      output.value = 0;
                      for ( var n = 1 ; n <= 10 ; n++ ){
                      var text = frmObj["CompetenzeExtr a-" + n];
                      if (text){
                      x = parseFloat(text .value);
                      output.value = parseFloat(outp ut.value) + ((isNaN(x)) ? 0 : x);
                      }
                      }
                      output.value = parseFloat(outp ut.value).toFix ed(2);
                      }
                      }
                      -->
                      </script>
                      </head>
                      <body>
                      <form method="POST" name="frm">
                      <p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
                      <div align="center">
                      <table border="0" id="table3">
                      <tr>
                      <td CLASS='MARGIN'> Importo<br>base </td>
                      <td CLASS='MARGIN'> Numero<br>ore</td>
                      <td CLASS='MARGIN'> Competenze<br>e xtra</td>

                      <td CLASS='MARGIN'> Totale<br>Compe tenze extra</td>

                      <td CLASS='MARGIN'> Importo<br>base </td>
                      <td CLASS='MARGIN'> Numero<br>ore</td>
                      <td CLASS='MARGIN'> Trattenute<br>e xtra</td>
                      <td CLASS='MARGIN'> Totale<br>Tratt enute extra</td>
                      </tr>
                      <tr>
                      <td><input type="text" name="ImportoBa se-1" size="5" value="8.38647" onkeyup="calcol a(this.form, 1)"></td>
                      <td><input type="text" name="NumeroOre-1" size="10" value="29" onkeyup="calcol a(this.form, 1)"></td>
                      <td><input type="text" name="Competenz eExtra-1" size="10" value="243.21" readonly style="backgrou nd-color: #C0C0C0" onkeyup="calcol a(this.form, 1)"></td>
                      <td><input type="text" name="TotaleCom petenzeExtra-1" size="10" value="421.26" readonly style="backgrou nd-color: #C0C0C0"></td>
                      <td><input type="text" name="ImportoBa seTrattenute-1" size="5" value="100" onkeyup="calcol a(this.form, 1)"></td>
                      <td><input type="text" name="NumeroOre Trattenute-1" size="10" value="1" onkeyup="calcol a(this.form, 1)"></td>
                      <td><input type="text" name="Trattenut eExtra-1" size="10" value="100" readonly style="backgrou nd-color: #C0C0C0"></td>
                      <td><input type="text" name="TotaleTra ttenuteExtra-1" size="10" value="100" readonly style="backgrou nd-color: #C0C0C0"></td>
                      </tr>
                      <tr>
                      <td><input type="text" name="ImportoBa se-3" size="5" value="8.38647" onkeyup="calcol a(this.form, 3)"></td>
                      <td><input type="text" name="NumeroOre-3" size="10" value="8" onkeyup="calcol a(this.form, 3)"></td>
                      <td><input type="text" name="Competenz eExtra-3" size="10" value="67.09" readonly style="backgrou nd-color: #C0C0C0" onkeyup="calcol a(this.form, 3)"></td>
                      <td><input type="text" name="TotaleCom petenzeExtra-3" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                      <td><input type="text" name="ImportoBa seTrattenute-3" size="5" value="0" onkeyup="calcol a(this.form, 3)"></td>
                      <td><input type="text" name="NumeroOre Trattenute-3" size="10" value="0" onkeyup="calcol a(this.form, 3)"></td>
                      <td><input type="text" name="Trattenut eExtra-3" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                      <td><input type="text" name="TotaleTra ttenuteExtra-3" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                      </tr>
                      <tr>
                      <td><input type="text" name="ImportoBa se-2" size="5" value="55.4797" onkeyup="calcol a(this.form, 2)"></td>
                      <td><input type="text" name="NumeroOre-2" size="10" value="2" onkeyup="calcol a(this.form, 2)"></td>
                      <td><input type="text" name="Competenz eExtra-2" size="10" value="110.96" readonly style="backgrou nd-color: #C0C0C0" onkeyup="calcol a(this.form, 2)"></td>
                      <td><input type="text" name="TotaleCom petenzeExtra-2" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                      <td><input type="text" name="ImportoBa seTrattenute-2" size="5" value="0" onkeyup="calcol a(this.form, 2)"></td>
                      <td><input type="text" name="NumeroOre Trattenute-2" size="10" value="0" onkeyup="calcol a(this.form, 2)"></td>
                      <td><input type="text" name="Trattenut eExtra-2" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                      <td><input type="text" name="TotaleTra ttenuteExtra-2" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                      </tr>
                      </table>
                      </div>
                      </form>
                      </body>
                      </html>
                      [/HTML]

                      Comment

                      • viki1967
                        Contributor
                        • Oct 2007
                        • 263

                        #12
                        OK, thanks it is an advancement.

                        But I have to change only input type="text" "TotaleCompeten zeExtra-1", that is contains value 412.26, to visualize the sum of all the drawn out lines ( "TrattenuteExtr a-1", "TrattenuteExtr a-2", "TrattenuteExtr a-3" ) in case of changes in the input type "TrattenuteExtr a-1", "TrattenuteExtr a-2", "TrattenuteExtr a-3".

                        The input type="text" "TotaleCompeten zeExtra-2" and input type="text" "TotaleCompeten zeExtra-3" to contain value zero.

                        Comment

                        • Ferris
                          New Member
                          • Oct 2007
                          • 101

                          #13
                          OK,I see now,here's the new javascript code.

                          [CODE=javascript]
                          <script language="javas cript" type="text/javascript">
                          <!--


                          function calcola(frmObj, id)

                          {

                          frmObj["CompetenzeExtr a-" + id].value = parseFloat(frmO bj["ImportoBas e-" + id].value) * parseFloat(frmO bj["NumeroOre-" + id].value);
                          frmObj["CompetenzeExtr a-" + id].value = parseFloat(frmO bj["CompetenzeExtr a-" + id].value).toFixed (2);

                          frmObj["TrattenuteExtr a-" + id].value = parseFloat(frmO bj["ImportoBaseTra ttenute-" + id].value) * parseFloat(frmO bj["NumeroOreTratt enute-" + id].value);
                          frmObj["TrattenuteExtr a-" + id].value = parseFloat(frmO bj["TrattenuteExtr a-" + id].value).toFixed (2);




                          //var output = frmObj["TotaleCompeten zeExtra-" + id];
                          var output = frmObj["TotaleCompeten zeExtra-" + id];
                          if (output){
                          output.value = 0;
                          for ( var n = 1 ; n <= 10 ; n++ )
                          {
                          //var text = frmObj["CompetenzeExtr a-" + n];
                          var text = frmObj["TrattenuteExtr a-" + n];
                          if (text){
                          x = parseFloat(text .value);
                          output.value = parseFloat(outp ut.value) + ((isNaN(x)) ? 0 : x);
                          }
                          }
                          output.value = parseFloat(outp ut.value).toFix ed(2);
                          }
                          }

                          // -->
                          </script>
                          [/CODE]

                          Comment

                          • viki1967
                            Contributor
                            • Oct 2007
                            • 263

                            #14
                            I not have shown the problem.

                            Function javascript "calcola" is ok.

                            But I would need Only input type="text" "TotaleCompeten zeExtra-1".

                            In the form:

                            The input type="text" "TotaleCompeten zeExtra-1" = "CompetenzeExtr a-1" +
                            "CompetenzeExtr a-2" +
                            "CompetenzeExtr a-3"

                            The input type="text" "TotaleCompeten zeExtra-2" = 0.00 Always No change
                            The input type="text" "TotaleCompeten zeExtra-3" = 0.00 Always No change

                            Comment

                            • Ferris
                              New Member
                              • Oct 2007
                              • 101

                              #15
                              Hi

                              I'm sorry for my misunderstand quite a long time.
                              There's no changes in HTML code. I just edit javascript code.
                              Here's the complete code. I wish it is correct this time.

                              [HTML]
                              <html>
                              <head>
                              <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
                              <title>Modifica </title>
                              <script language="javas cript" type="text/javascript">
                              <!--
                              function calcola(frmObj, id)
                              {
                              frmObj["CompetenzeExtr a-" + id].value = parseFloat(frmO bj["ImportoBas e-" + id].value) * parseFloat(frmO bj["NumeroOre-" + id].value);
                              frmObj["CompetenzeExtr a-" + id].value = parseFloat(frmO bj["CompetenzeExtr a-" + id].value).toFixed (2);
                              frmObj["TrattenuteExtr a-" + id].value = parseFloat(frmO bj["ImportoBaseTra ttenute-" + id].value) * parseFloat(frmO bj["NumeroOreTratt enute-" + id].value);
                              frmObj["TrattenuteExtr a-" + id].value = parseFloat(frmO bj["TrattenuteExtr a-" + id].value).toFixed (2);
                              var output = frmObj["TotaleCompeten zeExtra-" + 1];
                              if (output){
                              output.value = 0;
                              for ( var n = 1 ; n <= 10 ; n++ )
                              {
                              var text = frmObj["CompetenzeExtr a-" + n];
                              if (text){
                              x = parseFloat(text .value);
                              output.value = parseFloat(outp ut.value) + ((isNaN(x)) ? 0 : x);
                              }
                              }
                              output.value = parseFloat(outp ut.value).toFix ed(2);
                              }
                              }
                              -->
                              </script>
                              </head>
                              <body>
                              <form method="POST" name="frm">
                              <p style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
                              <div align="center">
                              <table border="0" id="table3">
                              <tr>
                              <td CLASS='MARGIN'> Importo<br>base </td>
                              <td CLASS='MARGIN'> Numero<br>ore</td>
                              <td CLASS='MARGIN'> Competenze<br>e xtra</td>

                              <td CLASS='MARGIN'> Totale<br>Compe tenze extra</td>

                              <td CLASS='MARGIN'> Importo<br>base </td>
                              <td CLASS='MARGIN'> Numero<br>ore</td>
                              <td CLASS='MARGIN'> Trattenute<br>e xtra</td>
                              <td CLASS='MARGIN'> Totale<br>Tratt enute extra</td>
                              </tr>
                              <tr>
                              <td><input type="text" name="ImportoBa se-1" size="5" value="8.38647" onKeyUp="calcol a(this.form, 1)"></td>
                              <td><input type="text" name="NumeroOre-1" size="10" value="29" onKeyUp="calcol a(this.form, 1)"></td>
                              <td><input type="text" name="Competenz eExtra-1" size="10" value="243.21" readonly style="backgrou nd-color: #C0C0C0" onKeyUp="calcol a(this.form, 1)"></td>
                              <td><input type="text" name="TotaleCom petenzeExtra-1" size="10" value="421.26" readonly style="backgrou nd-color: #C0C0C0"></td>
                              <td><input type="text" name="ImportoBa seTrattenute-1" size="5" value="100" onKeyUp="calcol a(this.form, 1)"></td>
                              <td><input type="text" name="NumeroOre Trattenute-1" size="10" value="1" onKeyUp="calcol a(this.form, 1)"></td>
                              <td><input type="text" name="Trattenut eExtra-1" size="10" value="100" readonly style="backgrou nd-color: #C0C0C0"></td>
                              <td><input type="text" name="TotaleTra ttenuteExtra-1" size="10" value="100" readonly style="backgrou nd-color: #C0C0C0"></td>
                              </tr>
                              <tr>
                              <td><input type="text" name="ImportoBa se-3" size="5" value="8.38647" onKeyUp="calcol a(this.form, 3)"></td>
                              <td><input type="text" name="NumeroOre-3" size="10" value="8" onKeyUp="calcol a(this.form, 3)"></td>
                              <td><input type="text" name="Competenz eExtra-3" size="10" value="67.09" readonly style="backgrou nd-color: #C0C0C0" onKeyUp="calcol a(this.form, 3)"></td>
                              <td><input type="text" name="TotaleCom petenzeExtra-3" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                              <td><input type="text" name="ImportoBa seTrattenute-3" size="5" value="0" onKeyUp="calcol a(this.form, 3)"></td>
                              <td><input type="text" name="NumeroOre Trattenute-3" size="10" value="0" onKeyUp="calcol a(this.form, 3)"></td>
                              <td><input type="text" name="Trattenut eExtra-3" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                              <td><input type="text" name="TotaleTra ttenuteExtra-3" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                              </tr>
                              <tr>
                              <td><input type="text" name="ImportoBa se-2" size="5" value="55.4797" onKeyUp="calcol a(this.form, 2)"></td>
                              <td><input type="text" name="NumeroOre-2" size="10" value="2" onKeyUp="calcol a(this.form, 2)"></td>
                              <td><input type="text" name="Competenz eExtra-2" size="10" value="110.96" readonly style="backgrou nd-color: #C0C0C0" onKeyUp="calcol a(this.form, 2)"></td>
                              <td><input type="text" name="TotaleCom petenzeExtra-2" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                              <td><input type="text" name="ImportoBa seTrattenute-2" size="5" value="0" onKeyUp="calcol a(this.form, 2)"></td>
                              <td><input type="text" name="NumeroOre Trattenute-2" size="10" value="0" onKeyUp="calcol a(this.form, 2)"></td>
                              <td><input type="text" name="Trattenut eExtra-2" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                              <td><input type="text" name="TotaleTra ttenuteExtra-2" size="10" value="0" readonly style="backgrou nd-color: #C0C0C0"></td>
                              </tr>
                              </table>
                              </div>
                              </form>
                              </body>
                              </html>
                              [/HTML]

                              Comment

                              Working...