簡體   English   中英

document.getElementById().value 沒有設置值

[英]document.getElementById().value doesn't set the value

瀏覽器是chromium(ubuntu下)

這是一段代碼:(當然)警報消息顯示正確的值。 但是 points 元素沒有得到正確的值,它實際上是空的。 誰能告訴我為什么?

下面是 points 元素的定義方式。

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

這是 javascript 代碼應該如何填充它。

alert(request.responseText);

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

您的回復幾乎可以肯定是一個字符串。 您需要確保它被轉換為數字:

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

您可能會仔細查看您的 responseText。 聽起來你得到的是一個包含引號的字符串。 如果您通過 AJAX 獲取 JSON 數據,則通過JSON.parse()運行它可能會得到更一致的結果。

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

根據我對 Chrome 的測試:

如果將number輸入設置為數字,則它可以正常工作。

如果將number輸入設置為僅包含數字的字符串,則它可以正常工作。

如果將number輸入設置為包含數字和一些空格的字符串,則會將輸入設為空白。

您可能在服務器響應中您真正關心的數據之后有一個空格或一個換行符。

使用document.getElementById("points").value = parseInt(request.responseText, 10); 反而。

我能想到的唯一情況是,你在像ChromeSafari這樣的webkit瀏覽器上運行它,並且你在responseText中的返回值包含一個字符串值

在那個星座中,該值無法顯示(它會變成空白)

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


我的意思是,我期望錯誤/雙重編碼的字符串值。 Webkit 瀏覽器對type = number更加嚴格。 如果“僅”存在空白問題,您可以嘗試隱式調用Number()構造函數,例如

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

問題顯然不在於 javascript。 這是一個快速片段,向您展示代碼的工作原理。

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

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

如您所見,javascript 完美地將新值分配給輸入元素。 如果您能詳細說明這個問題,那將很有幫助。

請參閱下面的代碼片段

在 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

@slashingweapon 以另一種方式回答:
對我來說這很有效:

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

要么

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

嘗試使用,

$('#points').val(request.responseText);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM