0

自宅でテストしているときに機能する機能がありますが、自宅でテストすると機能しません。関数はランダムな文字列を作成し、フォームをロードするとすぐに呼び出されます。関数以外はすべて機能しているようです。なぜそうなるのかはわかりません。誰か助けてくれませんか?

ありがとう。

<script language="javascript" type="text/javascript">
function randomString() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz";
    var string_length = 3;
    var randomstring = '';
    var currentTime = new Date();
    var hours = currentTime.getHours();
    var minutes = currentTime.getMinutes();
    var seconds = currentTime.getSeconds();
    for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum+1);
    }
    document.getElementById('UniqueId').value = randomstring + hours + minutes + seconds;
}
</script>

4

1 に答える 1

0

このスクリプトをheadタグ内に配置すると、残りの html がロードされる前にスクリプトが実行される可能性があります。これは、id がロードされた要素がUniqueIdまだ存在しないため、見つからないことを意味します。HTMLドキュメントが完全にロードされた後に呼び出してみてください。

yourFunction = function() { ...code... }
window.onload = yourFunction

アップデート:

<script type="text/javascript">
    var randomString = function() {
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghiklmnopqrstuvwxyz";
    var string_length = 3;
    var randomstring = '';
    var currentTime = new Date();
      var hours = currentTime.getHours();
      var minutes = currentTime.getMinutes();
      var seconds = currentTime.getSeconds();
      for (var i=0; i<string_length; i++) {
        var rnum = Math.floor(Math.random() * chars.length);
        randomstring += chars.substring(rnum,rnum+1);
      }
      document.getElementById('UniqueId').value = randomstring + hours + minutes + seconds;
  }

  window.onload = randomString;
</script>

Windows XP および Chrome 21 上の Firefox 6 および IE 8、Mac OS X 10.8 上の Firefox 14 でテスト済み。できます。

于 2012-09-21T16:04:50.563 に答える