jensencom: Umrechnen in HTML

Hallo,

ich versuche, eine Zahl, genau genommen einen Sekundenwert, den ich per asp aus einer SPS erhalte (<% ReadPLC("Variable");%>) in Stunden:Minuten:Sekunden darzustellen.

Ich habe es mit Javascript probiert function Umrechnen(x), wobei ich die Funktion dort aufrufe, wo ich bisher die Zahl selbst auslese ( Umrechnen(<% ReadPLC("Variable");%>); ), allerdings klappt das nicht wirklich.

Was mache ich falsch, wie kann man das einfach und elegant lösen?

Gruß
jensencom

  1. Hi!

    Was mache ich falsch, wie kann man das einfach und elegant lösen?

    Du  machst falsch, dass Du hier nicht schreibst, was Du eigentlich machst. Wie man es einfach loesen kann, weiss deshalb niemand so genau. Man koennte raten.

    Gib doch einfach mal ein Beispiel. Und deinen JS Code.

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
    1. Warum loest Du Dein Problem nicht gleich serverseitig? Dann bist Du nicht auch JS angewiesen und bekommst Deinen Wert garantiert wie gewuenscht.

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
      1. Das wäre die unelegante Lösung... würde zur Not aber gehen. Ich kann und will die SPS nicht unnötig belasten, sie hat mit Kurvenberechnungen und Statistiken schon genug zu tun...

        Warum loest Du Dein Problem nicht gleich serverseitig? Dann bist Du nicht auch JS angewiesen und bekommst Deinen Wert garantiert wie gewuenscht.

        1. Das wäre die unelegante Lösung... würde zur Not aber gehen. Ich kann und will die SPS nicht unnötig belasten, sie hat mit Kurvenberechnungen und Statistiken schon genug zu tun...

          Was ist daran "unelegant"? Ein paar Grundrechnungsarten belasten eine SPS nicht - zudem sagst du ja, du liest sie per ASP aus, ich nehme mal an, dass der Webserver mit ASP nicht auf der SPS läuft?

          1. Das wäre die unelegante Lösung... würde zur Not aber gehen. Ich kann und will die SPS nicht unnötig belasten, sie hat mit Kurvenberechnungen und Statistiken schon genug zu tun...

            Was ist daran "unelegant"? Ein paar Grundrechnungsarten belasten eine SPS nicht - zudem sagst du ja, du liest sie per ASP aus, ich nehme mal an, dass der Webserver mit ASP nicht auf der SPS läuft?

            Doch, tut er. Es ist keine klassische SPS, aber aich kein IPC. Das Systme liegt irgendwo dazwischen.
            Das Problem ist, ich habe bereits unmengen Daten, die ich verarbeiten und verwalten muß, darunter sehr CPU-lastige Kurvenscheibenberechnungen.

            WEnn es irgend möglich ist, möchte ich soviel es geht "outsourcen"...

    2. Das ist ein Teil meiner Tabelle, wie sie bisher besteht:

      <table border="1" width="100%">  
      	<tr valign="top">  
      		<td width="13%">  
      			<center><h2>RB<br>Stats</h></center>  
      		</td>  
      		<td width="29%">  
      			<table border="1" width="100%">  
      				<tr>  
      					<td width="70%">Betriebsstunden:<br>Time meter:</td>  
      					<td width="30%"><% ReadPLC("BDE.R\_Betriebszeit");%></td>  
      					  
      				</tr>  
      

      Sie zeigt mir so den Wert direkt aus der SPS an, in Sekunden.

      Folgendes habe ich nun probiert:

      <script type="text/javascript>
      function Umrechnen(x)
      {
       document.write(x/3600":"(x-x/3600)/60":"(x-(x-x/3600))/60);
      }
      <table border="1" width="100%">
      <tr valign="top">
      <td width="13%">
      <center><h2>RB<br>Stats</h></center>
      </td>
      <td width="29%">
      <table border="1" width="100%">
      <tr>
      <td width="70%">Betriebsstunden:<br>Time meter:</td>
      <td width="30%">Umrechnen(<% ReadPLC("BDE.R_Betriebszeit");%>);</td>

      				</tr>  
      

      </script>

      Aber ich bekomme vom Explorer angezeigt: "Fehler auf der Seite"

      1. Moinsen!

        Deine Gruende verstehe ich gut. Aus genau den gleichen Gruenden geht bei uns ohne JS auch nix. Serverbelastung und Traffic muss minimal gehalten werden. Also arebiten wir mit Rohdaten und bauen die entsprechenden Seiten per JS.

        Dein Problem ist, dass das hier:

        <script type="text/javascript>
        function Umrechnen(x)
        {
        document.write(x/3600":"(x-x/3600)/60":"(x-(x-x/3600))/60);
        }
        <table border="1" width="100%">
        <tr valign="top">
        <td width="13%">
        <center><h2>RB<br>Stats</h></center>
        </td>
        <td width="29%">
        <table border="1" width="100%">
        <tr>
        <td width="70%">Betriebsstunden:<br>Time meter:</td>
        <td width="30%">Umrechnen(<% ReadPLC("BDE.R_Betriebszeit");%>);</td>

          			</tr>  
        

        </script>

        Mist ist.

        Aber ich bekomme vom Explorer angezeigt: "Fehler auf der Seite"

        Kein Wunder. Du mischt froehlich JS und HTML. Der Browser kann aber Dein HTML nicht als JS parsen und verweigert natuerlich die Arbeit.

        Packe also dein JS in Scriptbloecke und schon sollte es gehen. HTML hat in eine Scriptblock nichts verloren und JS nichts ausserhalb eines Scriptblocks.

        --
        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
              - T. Pratchett
        1. HAb einen anderen Ansatz gepostet.

          Wenn ch einen JS-Block habe, der eine Funktion beinhaltet, muß ich doch aber irgendwo diese Funktion aufrufen?

          Ich hab in JS bisher praktisch keine AHnung, in HTML eher nur Basis-Kenntnisse. Insgesamt sollte mein Problem aber auf einfacher Ebene lösbar sein, oder nicht?

  2. Hallo,

    ich versuche, eine Zahl, genau genommen einen Sekundenwert, den ich per asp aus einer SPS erhalte (<% ReadPLC("Variable");%>) in Stunden:Minuten:Sekunden darzustellen.

    Ich habe es mit Javascript probiert function Umrechnen(x), wobei ich die Funktion dort aufrufe, wo ich bisher die Zahl selbst auslese ( Umrechnen(<% ReadPLC("Variable");%>); ), allerdings klappt das nicht wirklich.

    Was mache ich falsch, wie kann man das einfach und elegant lösen?

    Gruß
    jensencom

    theoretisch sollte es so gehen...?
    <html>

    <head>
    <script type="text/javascript")
    <!--
    function Umrechnen(x)
    {
    document.write(x/3600":"(x-(x/3600))/60":"x-((x-(x/3600))/60));
    alert((x/3600":"(x-(x/3600))/60":"x-((x-(x/3600))/60)));
    }
    //->
    </script>
    </head>

    <body>
    <td width="30%"><input type="button" value="Umrechnen" onlick="Umrechnen(<% ReadPLC("BDE.R_Betriebszeit");%>)"></td>

    				</tr>  
    

    Tut aber auch nicht... Ich bekomme nichts angezeigt, kein Alert und auch keinen Wert...

    1. @@jensencom:

      nuqneH

      theoretisch sollte es so gehen...?

      Nein. Der Validator hätte die verraten, dass so gar nichts geht.

      <script type="text/javascript")

      Die Rundung solltest du auf die Spitze treiben.

      <!--
        [snip]
      //->

      Und den HTML-Kommentar beenden. Noch besser: ganz weglassen, er ist völlig unnütz.

      Qapla'

      --
      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      1. Hmmm... Danke, vier Augen und so...

        Leider ändert es nichts an der (nicht)Funktion... :(

        1. Hmmm... Danke, vier Augen und so...

          Leider ändert es nichts an der (nicht)Funktion... :(

          Weil Du dich nicht an meinen Rat gehalten hast. JavaScript gehoert in einen Scriptblock. Dein Funktionsaufruf tut das aber immer noch nicht.

          Ein Blick auf SELFHTML haette evtl. Wunder gewirkt.

          schnell und schmutzig:

          <script>
           tolle funktionen
          </script>
          <html>
           ganz viel HTML <script>JS zeug wie Funktionsaufrufe</script> noch mehr HTML
          </html>

          Das ist nicht besonders elegant, aber es funktioniert. Besser waere natuerlich, Inhalte und Scripte zu trennen und mit einem Script den Inhalt zu manipulieren.

          --
          "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                - T. Pratchett
          1. Hab ich ja probiert.

            aber wie rufe ich meine Funktion, die nun in einem eigenen Scriptblock steht, auf? (Ohne Buttons... Gerne auch automatisch zyklisch)

            1. Mahlzeit jensencom,

              Hab ich ja probiert.

              Wetten nicht?

              aber wie rufe ich meine Funktion, die nun in einem eigenen Scriptblock steht, auf?

              Einfach aufrufen ... der von Steel ansatzweise skizzierte Code sollte problemlos funktionieren. Zeige uns doch mal Deinen darauf aufbauenden Code.

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
              1. <html>

                <head>
                <meta http-equiv="Content-Language" content="de-at">
                <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
                <title>Startseite</title>
                <script type="text/javascript">
                function Umrechnen(x)
                {
                var Stunde;
                var Minute;
                var Sekunde;
                Stunde = (x/3600);
                Minute = (x-(x/3600))/60;
                Sekunde = x-((x-(x/3600))/60);
                alert(Stunde + ":" + Minute + ":" + Sekunde);
                }
                </script>
                </head>

                <body>

                <td width="70%">Betriebsstunden:<br>Time meter:</td>
                <td width="30%"><script type="text/javascript>Umrechnen(<% ReadPLC("BDE.R_Betriebszeit");%>));</script></td>

                Habs mit und ohne die <script> Tags im body probiert.

                Seid ein bißchen gnädig mit mir, ich hab nur wenige Grundkenntnisse :(

                1. Mahlzeit jensencom,

                  <html>

                  Es fehlt die Angabe eines Dokumenttyps.

                  var Stunde;
                  var Minute;
                  var Sekunde;
                  Stunde = (x/3600);
                  Minute = (x-(x/3600))/60;
                  Sekunde = x-((x-(x/3600))/60);

                  Einerseits kannst Du das vereinfachen, indem Du das Schlüsselwörtchen "var" (also die Variablendeklaration) direkt vor Deine Wertzuweisungen schreibst - andererseits bezweifle ich, dass Deine Berechnungen korrekt sind.

                    				<td width="30%"><script type="text/javascript>Umrechnen(<% ReadPLC("BDE.R\_Betriebszeit");%>));</script></td>  
                  

                  Bei einem rein Client-seitigen Problem (nämlich HTML<->Javascript) ist Server-seitiger Code absolut unsinnig. Zeige also bitte das, was Dein Server an den Browser ausliefert.

                  Habs mit und ohne die <script> Tags im body probiert.

                  Und warum? Wenn Du wüsstest, was <script>-Elemente bewirken und was darin enthalten sein sollte - dann müsstest Du nicht probieren. Eigne Dir also <http://de.selfhtml.org/javascript/intro.htm@title=die entsprechenden Grundlagen> an.

                  Seid ein bißchen gnädig mit mir, ich hab nur wenige Grundkenntnisse :(

                  Kein Problem - wenn Du den Willen zeigst, diese Kenntnisse *stark* zu erweitern ... :-)

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                  1. Naja, dann mach ichs in meiner Steuerung, scheiße auf den Systemleistungsverbrauch. Dafür muß ich dann nicht immer diese Rätsel hier lösen.

                    Sorry, von einem Forum habe ich mir direkte Hilfe erhofft, nicht das Gelächter zwischen den Zeilen, weil ich zu doof bin, JS oder HTML zu perfektionieren.

                    1. Hi,

                      Sorry, von einem Forum habe ich mir direkte Hilfe erhofft, nicht das Gelächter zwischen den Zeilen, weil ich zu doof bin, JS oder HTML zu perfektionieren.

                      Sorry, aber wenn du fertige Lösungen erwartest, dann bist du hier falsch.

                      Hier wird erwartet, dass du dir Grundkenntnisse der Techniken, die du verwenden willst, selber aneignest, und dass du selber mitdenkst, wenn dir Ansätze genannt werden.

                      MfG ChrisB

                      --
                      “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
                      1. Hier wird erwartet, dass du dir Grundkenntnisse der Techniken, die du verwenden willst, selber aneignest, und dass du selber mitdenkst, wenn dir Ansätze genannt werden.

                        Genau, also macht ihr hier weiter euer Ding, und ich löse meine Probleme mit meinen Kenntnissen.

                    2. Naja, dann mach ichs in meiner Steuerung, scheiße auf den Systemleistungsverbrauch. Dafür muß ich dann nicht immer diese Rätsel hier lösen.

                      Das mit dem Raetsel loesen sind wir hier, weil wir nicht wissen wie Dein Code letztlich aussieht.

                      Sorry, von einem Forum habe ich mir direkte Hilfe erhofft, nicht das Gelächter zwischen den Zeilen, weil ich zu doof bin, JS oder HTML zu perfektionieren.

                      Hier lacht niemand.

                      Das hier 'funktioniert' jedenfalls mit Deinem Script:
                      <td width="30%"><script type="text/javascript">Umrechnen(9900);</script></td>

                      (man beachte die " um type abzuschliessen!)

                      An Deiner Formel solltest Du noch etwas arbeiten. Da helfen Dir aber die <http://de.selfhtml.org/javascript/objekte/math.htm@title=mathematischen Funktionen von JS>.

                      --
                      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                            - T. Pratchett
                      1. Das hier 'funktioniert' jedenfalls mit Deinem Script:
                        <td width="30%"><script type="text/javascript">Umrechnen(9900);</script></td>

                        negativ, es geht nicht.

                        1. Check dis:

                          <html>  
                            
                          <head>  
                          <meta http-equiv="Content-Language" content="de-at">  
                          <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">  
                          <title>Startseite</title>  
                          <script type="text/javascript">  
                          alert("go!")  
                          function Umrechnen(x)  
                          {  
                          var Stunde;  
                          var Minute;  
                          var Sekunde;  
                          Stunde = (x/3600);  
                          Minute = (x-(x/3600))/60;  
                          Sekunde = x-((x-(x/3600))/60);  
                          document.write(Stunde + ":" + Minute + ":" + Sekunde);  
                          }  
                          alert("go");  
                          </script>  
                          </head>  
                            
                          <body>  
                            
                          <td width="70%">Betriebsstunden:<br>Time meter:</td>  
                          <td width="30%"> <script type="text/javascript">Umrechnen(9900);</script></td>  
                            
                          <body>
                          
                          --
                          "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                                - T. Pratchett
                        2. negativ, es geht nicht.

                          Es geht nicht ist keine Fehlerbeschreibung, hast du meinen Hinweis gelesen?

                          Struppi.

                          1. negativ, es geht nicht.

                            Es geht nicht ist keine Fehlerbeschreibung, hast du meinen Hinweis gelesen?

                            Struppi.

                            Sorry, nein, hab den Beitrag irgendwie überlesen.

                            Ich habe keine Fehlerkonsole... Ich bekomme auch keine FEhlermeldung.

                            Ich progge das rein im Texteditor.

                            Meine Lösung habe ich nun in der SPS gemacht, indem ich einfach die Daten einzeln zur Verfügung stelle.

                            1. Ich progge das rein im Texteditor.

                              und wie schaust du dir die Seite an?

                              Struppi.

                              1. Ich progge das rein im Texteditor.

                                und wie schaust du dir die Seite an?

                                Struppi.

                                Einspielen in die Steuerung, und dann runterladen via Explorer.

                                Es ist ein webserver :)

                                1. Einspielen in die Steuerung, und dann runterladen via Explorer.

                                  Eben, und der hat zwar keine Fehlerkonsole, aber zeigt auch JS Fehler an.

                                  Struppi.

                                  1. Einspielen in die Steuerung, und dann runterladen via Explorer.

                                    Eben, und der hat zwar keine Fehlerkonsole, aber zeigt auch JS Fehler an.

                                    Struppi.

                                    Mag sein. Aber es kommt keine Fehlermeldung.

                                    Wie dem auch sei, es geht jetzt, zwar anders als ich wollte, aber besser als ncihts.

                                    1. Mag sein. Aber es kommt keine Fehlermeldung.

                                      Sicher! Du weißt wo du sie findest im IE?

                                      Struppi.

                                      1. Mag sein. Aber es kommt keine Fehlermeldung.

                                        Sicher! Du weißt wo du sie findest im IE?

                                        Struppi.

                                        Scriptfehler sind aktiviert. Es wurden ja bei manchen Versuchen auch welche ausgegeben.

                                        Aber egal... Ich hab es nun anders gelöst, und es funzt. Wenn auch nicht im JS/HTML...

                                        Danke euch trotzdem für die viele Mühe.

                                        jensencom

                                    2. @@jensencom:

                                      nuqneH

                                      Mag sein. Aber es kommt keine Fehlermeldung.

                                      Extras > Internetoptionen > Reiter "Erweitert" > unter "Browsen": [ ] Skriptfehler anzeigen

                                      Vielleicht willst du das aktivieren?

                                      Oder einen Browser mit besserer Fehlerkonsole nutzen, Firefox bspw.?

                                      Qapla'

                                      --
                                      Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
                                2. Mahlzeit jensencom,

                                  Ich progge das rein im Texteditor.

                                  und wie schaust du dir die Seite an?

                                  Struppi.

                                  Einspielen in die Steuerung, und dann runterladen via Explorer.

                                  Eine andere Möglichkeit wäre die Nutzung eines vernünftigen Browsers, der eine Fehlerkonsole besitzt, die auch hilfreiche und aussagekräftige Hinweise gibt ...

                                  MfG,
                                  EKKi

                                  --
                                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          2. Das ist nicht besonders elegant, aber es funktioniert. Besser waere natuerlich, Inhalte und Scripte zu trennen und mit einem Script den Inhalt zu manipulieren.

            Geht übrigens nicht... hab genau das mal probiert...

    2. Tut aber auch nicht... Ich bekomme nichts angezeigt, kein Alert und auch keinen Wert...

      Das ist i.d.R. ein Zeichen für einen Fehler. Schau mal in die Fehlerkonsole1

      Struppi.

    3. Was mache ich falsch, wie kann man das einfach und elegant lösen?

      Ich hab aufgrund deiner Aussage, dass du keine Fehlermeldung bekommst - weil das einfach nicht glaubwürdig ist - mir den Code mal genauer angeschaut und in meinem Editor kopiert.

        				<td width="30%"><input type="button" value="Umrechnen" onlick="Umrechnen(<% ReadPLC("BDE.R\_Betriebszeit");%>)"></td>  
      

      und dort (im Editor) sieht man auf den ersten  Blick was hier falsch ist. Hat dein Editor kein Syntax Highlighting für HTML? Dann besorg dir unbedingt einen anderen. Ich benutze Notepad++

      Der Fehler ist, du kannst an der Tabellenzelle soviel rumlecken wie du willst, da wird nie was passieren, du musst clicken nicht licken.

      Struppi.

      1. @@Struppi:

        nuqneH

        und dort (im Editor) sieht man auf den ersten  Blick was hier falsch ist. Hat dein Editor kein Syntax Highlighting für HTML?

        Jemand hätte jensencom ja auch den Tip mit dem Validator geben können.

        Oh, hat ja.

        Qapla'

        --
        Alle Menschen sind klug. Die einen vorher, die anderen nachher. (John Steinbeck)
      2. [latex]Mae  govannen![/latex]

        Der Fehler ist, du kannst an der Tabellenzelle soviel rumlecken wie du willst, da wird nie was passieren, du musst clicken nicht licken.

        Unglaubliches spielt sich hier ab. Womit bewiesen wäre, woran hier vorwiegend gedacht wird. :)

        Cü,

        Kai

        --
        A workaround for an avoidable problem often adds clutter and overhead to the program which
        could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
        Foren-Stylesheet Site Selfzeug JS-Lookup
        SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?