JS:在字符串中添加逗号

时间:2013-08-17 07:41:50

标签: javascript

我正在尝试将逗号添加到字符串中并通过以下函数显示到标签中:

HTML:

<input type="text" onkeyup="addCommas(this.value);" /> <br /><br />
<label id="result">Result: </label>

JS

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    var result = x1 + x2;
    document.getElementById('result').value = result;
}

JsFiddle

但不会将结果显示在标签中。

我做错了什么?

3 个答案:

答案 0 :(得分:5)

试试这个

 document.getElementById('result').innerHTML = result;

而不是.value,请使用.innerHTML

答案 1 :(得分:5)

标签不使用value来分配值。它使用innerHTML。试试下面的内容。

document.getElementById('result').innerHTML = result;

正如评论中所指出的,最好使用textContentinnerText选项来设置值(仅适用于纯文本),因为它们比innerHTML更安全。您可以使用它如下图所示。

document.getElementById('result').textContent = result;

document.getElementById('result').innerText = result;

FireFox

innerText属性不支持,并且它使用textContent属性。因此,以下方法适用于各种浏览器。

var resultDiv = document.getElementById('result');

if (typeof resultDiv.innerText === 'string') {
    resultDiv.innerText = result;
}
else {
    resultDiv.textContent = result;
}

<强>来源:

  1. IE8 label update via javascript issue
  2. 'innerText' works in IE, but not in Firefox

答案 2 :(得分:3)

使用innerHTML代替value

document.getElementById('result').innerHTML = result;

JSFIDDLE http://jsfiddle.net/J4mLD/1/

另请注意,要在JSFIDDLE中使用内联事件处理程序,您必须将第二个下拉列表设置为nowrap选项之一。