2012-02-02 34 views
0

ユーザーにユニットシステムを変更させたい場合があります。そうすることで、私はページ全体を調べなければならないでしょう:javascriptループで複数の入力値を変更する方法

a)ユニットの説明をテキストから変更してください。b)現在の値を新しい単位に変換してください。

私はgetElementByIdinnerHTMLを使って私が大丈夫です。その2番目の部分は難しいです

例 - 私は "GIIP(BCF):"という単位と235と100という値の2つのエントリを持っています。

<table id="table2"> 
    <tr><input id="calc" type="button" value="Test Convert" onClick="conversion();" /> 
    <td class="leftcol" id=test_units1>GIIP (BCF):</td> 
<td><input id=test_value1 size="7" type="number" value="235"> </td>  
    <td class="leftcol" id=test_units2>GIIP (BCF):</td> 
<td><input id=test_value2 size="7" type="number" value="100" > </td></table> 

私はボタンをクリックすると、(例えば、私はユニットの説明を変更し、単純に既存の値を倍にしたい)以下を実行。

function conversion() { 
for (var i = 1, e; e = document.getElementById("test_units" + i); ++i) 
e.innerHTML = "m<sup>3</sup>"; 
convert_values(); 
} 

function convert_values() { 
    for (var i = 1, e; e = parseFloat(document.getValueById("test_value" + i)); ++i) 
var val = (e*2).toString(); 
e.innerHTML = val; 
} 

ユニットの説明はOKに変換されますが、値は影響を受けません。誰もがよりエレガントな方法で値を変換する方法を提案することができます(または実際にすべて!)。どのようなページ/フォームでもこれらのコンバージョンの多くを行うことができます。

答えて

1

入力オブジェクトの値を取得するには、element.valueを使用します。ここで、elementは入力タグへの参照です。入力の値を設定するには、element.value = newValue;を使用します。どちらにも.innerHTMLを使用しないでください。また、コード内では、ある場所の値と別の場所の要素として、eを処理しています。

だから、あなたはこのようにそれを行うことができます。

function convert_values() { 
    for (var i = 1; i < 2; i++) 
     var obj = document.getElementById("test_value" + i); 
     obj.value = Number(obj.value) * 2; 
} 
0

これはそれを行う必要があります。

function convert_values() { 
    for (var i = 1, e; e = document.getElementById("test_value" + i); ++i) 
    e.value = parseFloat(e.value)*2; 
} 

作品をあなたが持っていたもののように、用途getElementByIde.valueを除き、あなたは面白いことがありましたあなたのバージョンで進んでいます...

関連する問題