无法在JavaScript中将输入文本转换为int

Lor*_*aad 5 html javascript

我试图通过单击表头来对HTML中的表进行排序.排序适用于字符串,但在比较数字时,它会计算"10"<"2".显然,我正在比较字符串,但我无法从表格单元格中获取数字.这是一个正在发生的事情的工作示例:

 <script type="text/javascript" >
      function sortBy() {
          var table = document.getElementById("table");
          var rows = table.getElementsByTagName("tr");
          var number = rows[1].getElementsByTagName("td")[0].innerHTML;
          document.write(number);  // This should be printing "7".
      }
 </script>

 <?php 
      echo "<table id='table'>
         <thead><tr><th onclick='sortBy()'>CLICK ME</th></thead></tr>
         <tbody><td><input readonly value='7'></td></tbody>";
 ?>
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我试图得到整数7.我已经尝试了parseInt(number),但是评估结果是NaN,所以我尝试编写的是什么number,它打印的是文本字段而不是文本字段的内容.我通过打印来检查这个number.length,然后我得到了29,而不是1.

我试过了,number.value但那是undefined.

我试着更换.innerHTML.value,但是这undefined太.

有什么方法可以将其转换为数字吗?或者至少剥离html标签等等?我意识到我可以使用字符串及其长度(如果(A.length> B.length){A更大}其他{比较正常})来装配我自己的比较逻辑,但这很麻烦,不会帮助我理解这个问题.

Rom*_*ePC 7

问题是你没有选择正确的标签; 你需要为<input>保存值的选择器添加一个选择器.

function sortBy() {
    var table = document.getElementById("table");
    var rows = table.getElementsByTagName("tr");
    var number = rows[1].getElementsByTagName("td")[0].getElementsByTagName("input")[0].getAttribute("value");
    document.write(number);  // This should be printing "7".
}
Run Code Online (Sandbox Code Playgroud)