2

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

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;
}

提琴手

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

我究竟做错了什么?

4

3 回答 3

5

尝试这个

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

而不是.value,使用.innerHTML

于 2013-08-17T07:44:23.270 回答
5

标签不value用于分配值。它使用innerHTML. 试试下面的。

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

正如评论中指出的那样,最好使用textContentor innerText选项来设置值(仅适用于纯文本),因为它们比innerHTML. 你可以使用它,如下所示。

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

或者

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

innerTextFireFox不支持该属性,它使用该属性。因此,以下方法将适用于浏览器。textContent

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

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

资料来源:

  1. 通过 javascript 问题更新 IE8 标签
  2. 'innerText' 在 IE 中有效,但在 Firefox 中无效
于 2013-08-17T07:44:25.897 回答
3

使用innerHTML代替value

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

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

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

于 2013-08-17T07:45:31.423 回答