1

私は JavaScript にあまり詳しくありませんが、このサイトで見つけたスクリプトを使用して、ここまでの操作を十分に行いました。

<script>
function updateClock ( ) {
var sd = Math.round(new Date().getTime() * 0.0000067322371075102 );
document.getElementById("stardate").firstChild.nodeValue = sd;
}
</script>
<body onload="updateClock(); setInterval('updateClock()', 1000 )">
<span id="stardate">&nbsp;</span>
</body>

出力は、現在 Star Trek Online で使用されている stardate 計算に非常に近い数値です。ただし、その数値は小数点を 2 桁左に移動する必要があります。方程式にゼロを追加したり削除したりすると、カウントが短縮または拡張されますが、小数が必要であり、これを実現する方法がまったくわかりません。

誰か私にアイデアがありますか?

4

1 に答える 1

1

また:

var sd = ...
var dotted = (sd+"").replace(/..$/,'.$&');

または:

var sd = ...
var dotted = (sd/100).toFixed(2);

いくつかのアドバイス:

  1. HTML に JavaScript を混在させるのは得策ではありません。JavaScript を HTML 属性に入れる代わりに、プログラムでハンドラーをアタッチします。例えば:

    <!-- in the <head> -->
    <script type="text/javascript">
      window.addEventListener('load',function(){
        // this code will run once the page has loaded
      },false);
    </script>
    
    <!-- or alternatively right before </body> put -->
    
    <script type="text/javascript">
      // this code will run once all elements have been created
    </script>
    
  2. setInterval関数値を参照として使用できます。書く代わりに:

    // this creates a new anonymous function that invokes foo()
    // similar to using  new Function("foo()")
    setInterval("foo()",1000);
    

    ...これを行う方が良い:

    setInterval(foo,1000); // Functionally equivalent, less typing
    
于 2012-05-03T21:53:07.877 に答える