像素到厘米转换脚本无法正常工作

时间:2016-12-05 22:16:37

标签: javascript html

目标是在一个文本框中输入一定的值(像素或厘米),然后按一个按钮,按钮进行一些数学运算并在不同的文本框中显示结果。

会发生什么,我会得到'NaN'的结果,暗示我输入的字符串没有正确转换。我已经通过数百种方法来解决这个问题,但它仍无效。

代码:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Conversion</title>
</head>

<body bgcolor=#FF0000>
  <form id="conversions" name="conversions">
    Pixel value :
    <br>
    <input type="text" name="pxvalue" id="pxvalue">
    <br>
    <input type="submit" name="convertcm" id="convertcm" value="Convert cm to px!">
    <input type="submit" name="convertpx" id="convertpx" value="Convert px to cm!">
    <br>Centimeter value :
    <br>
    <input type="text" name="cmvalue" id="cmvalue">
    <br>
    <br>Output :
    <input type="text" name="output" id="output">
  </form>

  <!-- This is where all the JavaScript code goes -->
  <script>
    var form = document.getElementById("conversions");
    var strcmvalue = form.elements["cmvalue"];
    var strpxvalue = form.elements["pxvalue"];
    var cmvalue = ToInteger(strcmvalue);
    var pxvalue = ToInteger(strpxvalue);
    var output = document.getElementById("output");

    var ccmbutton = document.getElementById("convertcm").onclick = cm_to_pixel_conversion(cmvalue);
    var cpxbutton = document.getElementById("convertpx").onclick = pixel_to_cm_conversion(pxvalue);

    var cm_per_pixel = 0.026458333;
    var px_per_cm = 37.795275591;

    function pixel_to_cm_conversion(pvalue) {
      cmconversion = pvalue / px_per_cm;
      output.value = cmconversion.toString();
    }

    function cm_to_pixel_conversion(cvalue) {
      pxconversion = cvalue / cm_per_pixel;
      output.value = pxconversion.toString();
    }

    function ToInteger(x) {
      x = Number(x);
      return x < 0 ? Math.ceil(x) : Math.floor(x);
    }
  </script>
  <!-- End of the JavaScript code-->

</body>

</html>

1 个答案:

答案 0 :(得分:2)

因为您没有将值传递给方法,所以您传递的是html元素。

XmlSerializer serializer = new XmlSerializer(typeof(myXMLClass??));

您需要<HitCode code="4" description="CONSUMER DECLARATION" /> public static double sumOfSeries(double x, int numTerms){ double result = 0; if(x<=1 && x>=-1){ double startval=3; for(int i=0; i<numTerms-1;i++){ result+= (double)(oddevenfact(startval-2)/oddevenfact(startval-1))*(Math.pow(x, startval)/startval); startval+=2; } if(numTerms!=0) result+=x; } return result; } static double oddevenfact(double x){ if (x>2) return(oddevenfact(x-2) * (long) x); return((double) x); }

下一个问题是您在页面加载时读取值,因此您只能获得加载时的值。

因此,您应该阅读这些值并将它们转换为方法内部的数字,而不是在页面加载时。

之后,您的click事件正在调用该函数,而不是引用它。

var strcmvalue = form.elements["cmvalue"];  //reference element
var strpxvalue = form.elements["pxvalue"];  
var cmvalue = ToInteger(strcmvalue);  //passing element, not the value
var pxvalue = ToInteger(strpxvalue);