私は進行状況バーで作業しています。それはラベルを持っています。特定のスクリプトが完了したらそのラベルを調整したい。考えられる解決策の答えを見つけた後、私は次のスクリプトを思いついた。最初は期待どおりに開始し、機能します。しかし、第2のものはそうではない。どうしたの?ここでは、コードです:最初のものが終了したときに2番目のjavascriptを開始する
HTML:
<form method ="post">
<input class=generate type="submit" value="Upload" onclick="move();finalize()"/>
</form>
Javascript:
<script>
function move() {
var elem = document.getElementById("myBar");
var myFunc01 = function() {
var i = 1;
while (i < 101) {
(function(i) {
setTimeout(function() {
i++;
elem.style.width = i + '%';
elem.innerHTML = i + '%';
}, 600 * i)
})(i++)
}
};
myFunc01();
}
</script>
<script>
function finalize() {
var elem = document.getElementById("myBar");
var myFunc02 = function() {
elem.innerHTML = 'Finalizing...';
};
setTimeout(myFunc02, 600);
}
</script>
スクリプトのロード順序は、関数の実行の論理的な順序とは無関係であるどのように動作するかの基本的な考え方のthats。ボタンがクリックされるまでに、すべてが既にロードされています。匿名のsetTimeout関数の最後の実行でfinalizeを呼び出す必要があります。 – James