【问题标题】:input.value=<variable> returning static value [Javascript]input.value=<variable> 返回静态值 [Javascript]
【发布时间】:2014-04-30 14:31:33
【问题描述】:

我对此很陌生,最近做了一个非常原始的程序,可以计算 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>

我总是在结果输入中得到一个“1”。如何让它给出 while 循环的总数?

【问题讨论】:

  • 您忘记获取对象的值。 document.getElementById('y') => document.getElementById('y').value

标签: javascript html variables while-loop output


【解决方案1】:

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

您应该获取输入元素的(将是string),然后将其转换为整数:

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

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

【讨论】:

    【解决方案2】:

    这总是返回那个 DOM 对象

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

    你可以使用

    document.getElementById('elementid').value;
    

    【讨论】:

      【解决方案3】:

      您通过document.getElementById('x'); 获取值,这是错误的,但应该类似于

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

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

      代替

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

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

      DEMO

      【讨论】:

      • 可能是因为零解释?
      猜你喜欢
      • 2016-09-20
      • 2013-06-09
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多