0

私はこのhtmlとajaxファイルを持っていますが、私が望むように毎秒更新されていません。毎秒 getTime() を呼び出す必要があります。一度だけ実行し、その後は何もしません。

何かご意見は?ありがとう。

<head>
    <title>Auction</title>
    <script type="text/javascript">
        function getTime() {
            if (str=="") {
                document.getElementById("txtHint").innerHTML="";
                return;
            } 

            if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            } else {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
                }
            }

            xmlhttp.open("GET","functions.php?action=getCurrentTime&id=13",true);
            xmlhttp.send();

            setTimeout(getTime, 1000);
        }

        window.setInterval(getTime, 1000);
    </script>
</head>
<body>
    <?php beginGetAllInfo(); ?>
</body>

4

1 に答える 1

1

サンプルコードに基づいて、内部で最初に発生するのは、名前付きの変数が空かgetTime()どうかをチェックすることです。そうであれば、関数から戻ります。(サンプルコードで)定義されていないため、返されるはずです。そのステートメントを削除するか、ステートメントが失敗しないように初期化してください。strstrifstr

さらに、(最終的に) コードを毎秒 2 回実行させる 2 つのステートメントがあります setTimeout(getTime, 1000);window.setInterval(getTime, 1000);

1setTimeout()つ目は、1 秒が経過した後にコードを 1 回実行します。ただし、これはgetTime()メソッドが実行されるたびに実行されるため、理論的には毎秒実行する必要があります。2 番目は、setInterval()1 秒間隔でコードを実行します。したがって、コードは常に 1 秒ごとに実行されます。

setTimeout()内の行を削除するか、を a にgetTime()変更することをお勧めします(いわばボールを転がすため)。setInterval()setTimeout()

于 2012-10-05T03:01:56.483 に答える