我很抱歉这个标题,这个问题对我的代码非常具体,我不确定如何说出来。
我正在创建一个网页,可用于将Miles转换为KM,或者在给定范围内将KM转换为Miles。我有两个用于输入的文本框,例如,如果输入5和50,它将生成一个表格,其中所有转换均为5英里/公里到50英里/公里,具体取决于选择的转换。
问题是,如果给定范围内的较高数字大于10且低于数字乘以10,则不起作用。
例如,如果我输入3和10,它只会生成一个转换为10的表而不是中间的数字。使用3和9到30,99和300,999和3000之间的任何数字都是一样的,依此类推。
以下是我确定必须导致问题的代码:
//gets values in the textboxes, used for the range of conversions
var f = document.getElementById(from).value;
var t = document.getElementById(to).value;
//finds which one is lowest and highest, stores them in appropriate variables
if(f > t) {
max = f;
min = t;
} else {
max = t;
min = f;
}
表生成:
//Loops using the lowest number as a start for the for loop, ending only when it is less than or equal to the highest number
//Makes the table, inserting appropriate conversion numbers
//NOTE: choice is a boolean used to check whether we are converting from Miles to KM or KM to Miles
for(var i = min; i <= max; i++) {
if(choice) {
var row = tab.appendChild(document.createElement("tr"));
for (var j = 0; j < 2; j++) {
var cell = row.appendChild(document.createElement("td"));
if(j == 0) {
cell.appendChild(document.createTextNode(i));
} else {
cell.appendChild(document.createTextNode(convertToKm(i)));
}
}
} else {
var row = tab.appendChild(document.createElement("tr"));
for (var j = 0; j < 2; j++) {
var cell = row.appendChild(document.createElement("td"));
if(j == 0) {
cell.appendChild(document.createTextNode(i));
} else {
cell.appendChild(document.createTextNode(convertToMiles(i)));
}
}
}
}
这让我发疯,我确信这是一个小错误。
答案 0 :(得分:1)
问题在于:
var f = document.getElementById(from).value;
var t = document.getElementById(to).value;
f
和t
都是字符串,因为它们来自输入字段,因此3
大于&#34;大于&#34;例如10
。您需要使用parseInt
:
var f = parseInt(document.getElementById(from).value, 10);
var t = parseInt(document.getElementById(to).value, 10);