2016-07-22 4 views
4

私はタイプフィールドの入力を持つフォームを持っています。私はいくつかのラジオボタンを持っており、どれをクリックするかによって、入力タイプフィールドの値が更新されます。その後、Javascript関数を呼び出して特定のアクションを実行し、関数は入力フィールドで更新された数量(テキスト)を使用します。DOMを操作するときにJavascriptが同期していますか?

もちろん、その数量を関数自体に渡すのがより安全ですが、JavaScriptを最初に更新して、更新入力フィールドの値を表示し、document.getElementById("input-quantity").valueで取得し、これを使用して取得することができます関数?または、DOMのリフレッシュに時間がかかる場合、関数は「古い」値を取得できますか?

+0

DOMContentLoadedリスナーイベント..セッション属性に値を保存することをお勧めします.. –

+0

JSを使用してDOMに値を入れてから、DOMから値を読み取らない方がよいでしょう。ちょうどそれを使用するか、それを渡すか、どこかに保管してください。 – vsync

+4

@ABUdhay - あなたはしません。 – nnnnnn

答えて

5

あなたが言ったように、値を関数に渡すだけでよいでしょう。

しかし、はい、入力の値を設定することは同期です。あなたが何を述べているのか、あなたは確実に更新された価値、クロスブラウザを得るでしょう。他のDOM操作(要素の挿入、削除、移動)も同期していますが、JavaScriptコードが完了するまでユーザーが結果を見ることができないため、ブラウザはスレッドを使用して表示を再描画します。 (JavaScriptは本質的にシングルスレッドではありませんが、ブラウザはJavaScriptコードを実行するために1つのメインUIスレッドを使用し、通常はそのスレッドを使用してディスプレイを更新します)。

+0

あなたの結論を参考にしてください。そして、長い実行中のjavascriptコードのUI更新をどのように説明するのですか? – Chao

+1

@Charvis:[ECMAScript仕様のジョブとジョブキュー]セクションを参照してください(http://www.ecma-international.org/ecma-262/7.0/index.html#sec-jobs-and-job-queues) HTML仕様のさまざまな部分、特に[ここ](https://www.w3.org/TR/html5/introduction.html#serializability-of-script-execution)と[ここ](https:// www。 w3.org/TR/html5/introduction.html#common-pitfalls-to-avoid-when-using-the-scripting-apis)。長時間実行するスクリプトについて特定の質問がある場合は、質問を投稿してください! :-)(質問では「長期実行スクリプト」の意味を定義する必要があります。) –

関連する問題