Ben*_*gúz -1 javascript pseudocode
(抱歉我的英文= /) 这是伪的:
function lnko(a, b)
-if a = b then lnko := a
-if a < b then lnko := lnko(a, b-a)
-if a > b then lnko := lnko(a-b, b)
function end
Run Code Online (Sandbox Code Playgroud)
我的代码是:
<html>
<head>
<script type="text/javascript">
function run()
{
var a = document.getElementById("a").value;
var b = document.getElementById("b").value;
var s = lnko(a,b)
document.write(a+"/"+b+"<br>"+(a/s)+"/"+(b/s));
// document.write("<br>"+s)
}
function lnko(a,b)
{
alert(a+"..."+b)
if (a==b)
{
return a;
}
if (a<b)
{
return lnko(a,(b-a));
}
if (a>b)
{
return lnko((a-b),b);
}
}
</script>
</head>
<body>
<input type="text" id="a" />
<input type="text" id="b" />
<input type="button" onclick="run()" />
</body>
Run Code Online (Sandbox Code Playgroud)
问题是,如果我用10/5,15/3,...等调用lnko它什么都没做..
当您检索a和b,你越来越是一个字符串,而不是数字,这样lnko是不是做你所期望的.具体来说,这在比较中引起了问题:10 > 5但是"10" < "5".
解决这个问题的简明方法是:
var a = +document.getElementById("a").value;
var b = +document.getElementById("b").value;
Run Code Online (Sandbox Code Playgroud)
正如Pascal Belloncle指出的那样,您可以交替使用:
var a = parseInt(document.getElementById("a").value, 10);
var b = parseInt(document.getElementById("b").value, 10);
Run Code Online (Sandbox Code Playgroud)
最大的不同之处在于如何处理畸形的"数字" 42a.第一个form(+doc...)无法将值转换为数字并返回,NaN同时parseInt解析它可以返回的内容42.
| 归档时间: |
|
| 查看次数: |
675 次 |
| 最近记录: |