我有一个案例,我希望能够允许用户更改他们的单位系统。这样做我将不得不浏览整个页面并且:
a)从文本和
改变单位描述
b)将当前值转换为新单位。
第一部分我可以使用getElementById
和innerHTML
来实现。它是我遇到困难的第二部分
示例 - 我有两个条目,单位为“GIIP(BCF):”,值分别为235和100;
<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,但值不受影响。任何人都可以建议一种方法来以更优雅的方式(或者实际上!)转换价值观。请记住,我会在任何一个页面/表单上进行许多转换。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
这应该这样做:
function convert_values() {
for (var i = 1, e; e = document.getElementById("test_value" + i); ++i)
e.value = parseFloat(e.value)*2;
}
就像你拥有的一样,除了使用getElementById
和e.value
之外,你的版本中还有一些有趣的东西......