0

ユーザー入力を取得して、関数で数学的に使用できる整数に文字列を変換するにはどうすればよいですか??

コーディングはまったく初めてで、簡単な電卓を作ろうとしています。何が間違っているのかわかりません。助けていただければ幸いです。

    function TLV() 
    {
            var TLVday = Integer.valueOf("getTLVdate");
        var OBday = Integer.valueOf("getOBdate");
        if (TLVday<OBday)
        {
            DD = OBday + 10;
        }
        else
        {
            DD = OBday + 30;
        }
        document.getElementById("TLVoutput").innerHTML=DD;
    }


<form name="myform" id="frm1">
    <table style="border:0;">
    <tr>
    <td>OB Start Day:</td>
    <td><input type="text" id="getOBdate"/></td>
    </tr>
    <tr>
    <td>TLV Start Day: </td>
    <td><input type="text" id="getTLVdate"/></td>
    <td id="TLVoutput"></td>
    </tr>
<button onclick="TLV()">Calculate</button>
    </table>
</form>
4

4 に答える 4

3

以下に 3 つの一般的な方法を示します。

var myNumber = +myString;            // coerce string to number
var myFloat = parseFloat(myString);  // parse as floating point number
var myInt = parseInt(myString, 10);  // parse as a base-10 integer

ドキュメンテーション:

+オペレーター - mdn msdn
parseFloat()メソッド - mdn msdn
parseInt()メソッド - mdn msdn

これらの手法にはそれぞれ独自の癖があります。JavaScript の動的な性質のため、型変換は単純ではありません。

parseInt()

parseInt()NaN左から右に数字を読み取ることにより、整数または a のいずれかを生成します。文字列に数字のみが含まれていて、ECMAScript 5 をサポートするブラウザーを使用ている場合 (IE8 以前ではサポートされていません)、非常に簡単です。これらの数字は 10 進数の数値として取得されます。IE8 以前では、最初のdigit is 0、8進数で数値を取得します。たとえば、最新のブラウザーと古いブラウザーでparseInt("010")返されます。これを修正するには、常に2 番目のパラメーターで 基数を指定します。ブラウザのバージョンに関係なく、常に を返します。108parseInt("010", 10)10

解析は、数字以外の最初の文字で停止します。したがって、 と同様に戻りparseInt("4 donuts")ます。文字列の最初の文字が数字またはまたはでない場合、 が得られるため、解析できません。4parseInt("4,000")+-NaN"$5"

文字列が で始まる場合、0x16 進数 (基数 16) として扱われます。 parseInt("0x10")戻ります16。radix: で base 16 を明示的に指定した場合も同じですparseInt("10", 16)

parseFloat()

parseFloat()に似ていparseInt()ます。違いは、parseFloat()基数 10 でのみ機能し、明らかに浮動小数点数を生成することです。

加算演算子 ( +)

JavaScript では、文字列を数値として使用できます。JavaScript コンストラクトが数値を受け取り、それ以外のもの (文字列など) を取得する場合、通常はそれを数値に "強制" しようとします。この動作が見られる 1 つのケースは、+演算子です。いくつかの点で、強制は解析よりも厳密です。先頭だけでなく、文字列全体が数値でなければなりませんNaN。しかし、別の言い方をすれば、それほど厳密ではありません。空または空白の文字列は0、強制的に数値に変換すると返されますがNaN、解析すると返されます。

加算演算子のほかに、文字列を数値に変換する他の方法には次のものがあります。

  • Number()コンストラクターを関数として使用する
  • 数値を受け入れるメソッドに文字列を渡します。Math.floor("10")
  • 算術演算子で文字列を使用します。
var string = "10";
var num = string * 1;
var num = string / 1;

ECMAScript 仕様のセクション 9.3.1で、文字列が数値に変換される方法の詳細を確認してください。

于 2013-07-19T21:57:11.717 に答える
1

「整数」などというものはありません。それは JavaScript ではなく Java です。

文字列を整数に解析するには、parseInt を使用できますが、整数か浮動小数点かを気にしない場合は、何もする必要はありません。使用しようとすると自動的に変換されます。

ただし、ID を使用するだけではフィールド値にアクセスできません。代わりに、DOM - 'document.getElementById("getTVLdate").value' を使用する必要があります。

于 2013-07-19T22:03:21.917 に答える
1

parseInt('value', 10 )文字列を数値に変換するために使用します

値を読み取るには、次の構文を使用します。id に基づいて要素を選択し、値プロパティを使用して値を取得します。

JavaScriptこれはあることとないことを覚えておいてくださいJava

var TLVday = document.getElementById.('getTLVdate').value

コードを次のように変更します

var button = document.getElementById('calculate');

button.addEventListener('click', TLV);

function TLV() {
    var TLVday = parseInt(document.getElementById('getTLVdate').value, 10),
        OBday = parseInt(document.getElementById('getOBdate').value, 10),
        DD = 0;
    if (TLVday < OBday) {
        DD = OBday + 10;
    } else {
        DD = OBday + 30;
    }
    document.getElementById("TLVoutput").innerHTML = DD;
}

イベントをインラインでバインドすることも避けてください。あなたの懸念を分離することは常に良い考えです。

フィドルをチェック

于 2013-07-19T21:56:29.043 に答える
0

浮動小数点が必要な場合はparseInt、使用できる数値に変換する必要がある文字列がある場合。parseFloat

parseInt('84945');

別のパラメーターを指定できますparseInt('84945',10)。ベースを指定するには、この場合はベース 10

于 2013-07-19T21:57:21.300 に答える