我试图通过单击表头来对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更大}其他{比较正常})来装配我自己的比较逻辑,但这很麻烦,不会帮助我理解这个问题.
问题是你没有选择正确的标签; 你需要为<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)