15

ブラウザはクロムです(ubuntuの下)

これはコードの一部です: (もちろん) アラート メッセージは正しい値を示します。ポイント要素は正しい値を取得せず、実際には空になります。理由を教えてもらえますか?

ポイント要素の定義方法は次のとおりです。

<input type='number' id='points' value='0'/> 

そして、これがJavaScriptコードがどのように入力されることになっているかです。

alert(request.responseText);

document.getElementById("points").value=request.responseText;
4

7 に答える 7

23

あなたの応答はほぼ確実に文字列です。数値に変換されることを確認する必要があります。

document.getElementById("points").value= new Number(request.responseText);

responseText を詳しく見てみましょう。引用符を含む文字列を取得しているように聞こえます。AJAX 経由で JSON データを取得している場合は、より一貫性のある結果が得られる可能性がありますJSON.parse()

document.getElementById("points").value= new Number(JSON.parse(request.responseText));
于 2012-11-25T17:42:12.700 に答える
4

Chromeでの私のテストによると:

number入力を数値に設定すると、正常に機能します。

number数値のみを含む文字列に入力を設定すると、正常に機能します。

number数値と空白を含む文字列に入力を設定すると、入力が空白になります。

実際に関心のあるサーバー応答のデータの後に、おそらくスペースまたは改行があります。

document.getElementById("points").value = parseInt(request.responseText, 10);代わりに使用してください。

于 2012-11-25T17:36:31.197 に答える
1

私が想像できる唯一のケースは、これをChromeSafariなどのWebkitブラウザーで実行し、の戻り値に文字列値が含まれていることです。responseText

そのコンステレーションでは、値を表示できません(空白になります)

例: http: //jsfiddle.net/BmhNL/2/


ここでの私のポイントは、間違った/二重にエンコードされた文字列値を期待しているということです。typeWebkitブラウザーは、 =に対してより厳密numberです。空白の問題が「のみ」ある場合は、次のNumber()ようにコンストラクターを暗黙的に呼び出すことができます。

document.getElementById("points").value = +request.responseText;
于 2012-11-25T17:33:21.517 に答える
0

問題は明らかにJavaScriptにはありません。コードの動作を示す簡単なスニペットを次に示します。

document.getElementById('points').value = 100;

http://jsfiddle.net/eqTm2/1/

ご覧のとおり、javascript は入力要素に新しい値を完全に割り当てます。問題について詳しく説明していただけると助かります。

于 2012-11-25T17:36:20.183 に答える
-2

を使ってみて、

$('#points').val(request.responseText);
于 2013-07-30T07:03:47.447 に答える