15

浏览器是铬(在ubuntu下)

这是一段代码:(当然)警报消息显示正确的值。但是 points 元素没有得到正确的值,它实际上是空的。谁能告诉我为什么?

以下是点元素的定义方式。

<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浏览器上运行它,并且您的返回值 in包含一个字符串 valueresponseText

在那个星座中,无法显示该值(它将变为空白)

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


我的意思是,我期望一个错误/双重编码的字符串值。Webkit 浏览器对type=更加严格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 回答
0

请参阅下面的代码片段

在 HTML 页面中

<input id="test" type="number" value="0"/>

在 Java 脚本中

document.getElementById("test").value=request.responseText;// in case of String 
document.getElementById("test").value=new Number(responseText);// in case of Number
于 2020-02-03T13:56:06.460 回答
0

@slashingweapon 以另一种方式回答:
对我来说这有效:

document.getElementById("points").setAttribute('value', new Number(request.responseText));

或者

document.getElementById("points").setAttribute('value', new Number(JSON.parse(request.responseText)));

于 2021-08-20T16:42:04.157 回答
-2

尝试使用,

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