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

Jsフィドル

ただし、結果をラベルに表示しません。

私は何を間違っていますか?

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;

innerTextプロパティはFireFoxでサポートされておらず、このプロパティを使用しています。したがって、以下の方法はブラウザ間で機能します。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 でインライン イベント ハンドラーを使用するには、2 番目のドロップダウンを nowrap オプションの 1 つに設定する必要があります。

于 2013-08-17T07:45:31.423 に答える