input.value = <variable>返回静态值[Javascript] </variable>

时间:2014-03-23 09:19:57

标签: javascript html variables while-loop output

我对此非常陌生,并且最近制作了一个非常原始的程序,它将为x和y的整数值计算x ^ y。脚本

var total = 1;
var power = 0;
var x = 4;
var y = 2;
while(power<=(y-1))
{power+=1;
 total*=(x);}
print(total);

在javascript控制台中运行,但是当我尝试制作一个简单的HTML文件时

<html>
<title>Score Verifier</title>
<head>
<script language="javascript">
function calculate()
{
var x=document.getElementById('x');
var y=document.getElementById('y');
var result=document.getElementById('result');
var total = 1;
var power = 0;
while(power<=(y-1))
{
power+=1;
 total*=(x+(power-power));}
result.value=total
}
</script>
</head>
<body>
Calculate x^y<br />
Enter x: <input id="x" type="text" /><br />
Enter y: <input id="y" type="text" /><br />
<input id="calc" type="button" value="Calculate" onclick="calculate()" /><br />
Result: <input id="result" type="text" />
</body>
</html>

我总是得到一个&#34; 1&#34;在结果输入中。如何让它从while循环中获得总数?

3 个答案:

答案 0 :(得分:2)

你总是得到1(初始值),因为你的代码永远不会进入while循环。您的xy类型为object,这就是y - 1将返回NaN(非数字)的原因,这就是为什么power<=(y-1)永远是false

你应该得到输入元素的值(将是string),然后将其转换为整数:

var x=parseInt(document.getElementById('x').value);
var y=parseInt(document.getElementById('y').value);

演示:http://jsfiddle.net/73xnS/

答案 1 :(得分:0)

你得到的值document.getElementById('x');这是错误的,但应该是

var x=parseInt(document.getElementById('x').value, 10);
//-------------------------------------Use----^

OR

var x = +document.getElementById('x').value;
//------^---this operator converts string to number

而不是

var x=document.getElementById('x');

您可以使用parseInt()函数将字符串转换为数字。

DEMO

答案 2 :(得分:0)

这总是返回那个DOM对象

var x=document.getElementById('x');
var y=document.getElementById('y');
var result=document.getElementById('result');

您可以使用

document.getElementById('elementid').value;