私はしばらくの間苦労していますが、私はこのコードがうまくいかない理由を見つけることができません。Javascript変数が未定義として表示される
#submitmsgをクリックすると、phpファイルから時間を取得する別の機能が起動されます。これはソートチャットボックスであり、このケースでは名前(これはJa)が表示され、その隣に「var」「tajm」が表示されます。 undefinedが時間の代わりに表示されています。
なぜこの作品はありませんか?
コードは以下のスニペット:
var tajm;
$(document).ready(function() {
$("#submitmsg").click(function() {
time();
var newtext = $("#textmsg").val();
var oldtext = document.getElementById("textbox").innerHTML;
document.getElementById("textbox").innerHTML = oldtext + "<br/><div id='name'>Ja: " + tajm + "</div><div id='red'>" + newtext + "</div>";
$("#textbox").scrollTop($("#textbox")[0].scrollHeight);
});
});
function time() {
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function() {
if (ajax.readyState == 4) {
tajm = ajax.responseText;
}
};
ajax.open("GET", "r.php", true);
ajax.send(null);
}
非同期HTTP要求に時間がかかります。 – Pointy
コードが "通常"の順序で実行された場合、コールバック( 'ajax.onreadystatechange')を提供する必要はありません。 –
私はこれを修正するためにsetTimeoutを追加し、ちょっと遅延させました。私はこれを行うことができるより効率的な方法はありますか? – xtra