2017-11-20 16 views
0

私は次元を入力する必要がある簡単な会話フォームで作業しています。 12x24x36インチから304.8x609.6x914.4mm。Javascript:文字列内の数字を変換する

私の問題は、これらの数値を別々に計算する方法がわかりません。

私はxを削除することができますが、すべての数字がマージされます。

ありがとうございました。ここ

は私のサンプルコードは

HTML

<h4>Dimensions</h4> 
<label>inches <input id="number1"></label> 
<label>mm <input id="number2"></label> 
<button type="button" onclick="myFunction()">convert</button> 

JS

function myFunction() { 
var inches = document.getElementById("number1").value; 

    var removex = inches.replace(/x/g,""); 

    var input = parseInt(removex); 

document.getElementById("number2").value = input 
} 

あるCODEPEN

https://codepen.io/anon/pen/yPpmej

+0

[文字列 '.split()'関数]を見(https://developer.mozilla.org/en -US/docs/Web/JavaScript/Reference/Global_Objects/String/split).'inches.split( "x") 'は数値の配列を返します。あるいは、正規表現を使いたいのであれば、xの:inches.match(/ \ d +/g)ではなく、数字にマッチします。 – nnnnnn

+0

空白や 'X'のようなものに分割する必要があります。必要な入力を決定し、有効な入力のみが指定されていることを確認し、入力要件を明示し、分割に基づいて計算する必要があります。 –

+0

先生、ありがとうございます。 –

答えて

3

あなたは次のように文字列がある場合:あなたは必要

var str = '304.8 x 609.6 x 914.4 mm' 
 
var numbers = str.split('x').map(parseFloat) 
 
console.log(numbers)

:あなたはsplit()parseFloat()を使用することができます

var str = '304.8 x 609.6 x 914.4 mm' 

はと数字の配列を取得しますあなたの入力フォーマットを知って、他のバリエーションを調整することができます。

parseFloat()は数字の後に数字以外の文字を無視するので、ストリッピングユニットでうまく機能します。

1

あなたは以下のように、あなたの関数を更新し、完全な望ましい結果のために、入力(文字列)として"12x24x36"を受信した場合: -

function myFunction() { 
 
    var inches = document.getElementById("number1").value; 
 
    var inchesArr = inches.split("x"); 
 
    var mmArr = inchesArr.map(function(i) { 
 
    return parseFloat(i) * 25.4; 
 
    }); 
 
    var mmString = mmArr.join("x"); 
 

 
    document.getElementById("number2").value = mmString; 
 
}

1

EXPLANATION

あなたを入力例12x24x36str.split('x')経由で配列に変換してから、インチからミリメートル(xインチ* 25.4)の数学的変換を行い、それらをミリメートル値の新しい配列に戻します。その後、xを使ってこれらの値をstr.join('x')に再結合して文書に戻すことができます。それはそれがどのように見えるかです。

SCRIPT

function myFunction() { 
    var inches = document.getElementById("number1").value.split('x'); 
    var millimeters = []; 
    for (var i = 0; i < inches.length; i++) millimeters.push(parseInt(inches[i]*25.4)); 
    document.getElementById("number2").value = millimeters.join('x'); 
} 

CODEPEN

https://codepen.io/anon/pen/KyZOYb

関連する問題