为什么我的代码不起作用?
Chrome给了我以下错误:Uncaught TypeError: Cannot read property 'toString' of undefined
。
它适用于1,2,3,4,6,7,8,9,但不适用于5,10,15,......
请帮帮我。
这是我的javascript代码:
<code><script>
function mmCal(val) {
var a, b, c, d, e, f, g, h, i;
a = val * 25.4;
b = a.toString().split(".")[0];
c = a.toString().split(".")[1];
d = c.toString().substr(0, 1);
e = +b + +1;
f = b;
if (d>5) {
document.getElementById("txtt").value = e;
} else {
document.getElementById("txtt").value = f;
}
}
</script></code>
这是我的HTML:
<code><input type="text" id="txt" value="" onchange="mmCal(this.value)"></code>
<code><input type="text" id="txtt" value=""></code>
答案 0 :(得分:1)
当a
是一个整数时,它不起作用,因为没有时间来分割你的字符串,而且这个数字的倍数为5。
答案 1 :(得分:0)
正如Sebnukem所说
当a是整数时,它不起作用,因为没有句号 拆分你的字符串,这发生在5的倍数。
但你可以有一个技巧,所以使用a % 1 != 0
知道该值是小数,请参阅下面的代码:
function mmCal(val) {
var a, b, c, d, e, f, g, h, i;
a = val * 25.4;
if(a % 1 != 0){
b = a.toString().split(".")[0];
c = a.toString().split(".")[1];
}
else{
b = a.toString();
c = a.toString();
}
d = c.toString().substr(0, 1);
e = +b + +1;
f = b;
if (d>5) {
document.getElementById("txtt").value = e;
} else {
document.getElementById("txtt").value = f;
}
}
那可以帮到你。
答案 2 :(得分:0)
将数字四舍五入为整数的奇怪方法: - )
您将英寸转换为毫米,然后将其舍入为整数,对吧?
为什么不使用&#39; toFixed()&#39;关于这个数字?请参阅:Number.prototype.toFixed()
我的意思是:
function mmCal(val) {
var a, rounded;
a = val * 25.4;
rounded = a.toFixed();
document.getElementById("txtt").value = rounded;
}
(您也可以使用&#34; toFixed(0)&#34;作为显式精度。)