Javascript:无法将字符串转换为数字

时间:2015-07-14 19:15:19

标签: javascript

鉴于这种情况,我必须使用节点列表来获取我需要使用的元素。我可以使用.textContent(或.nodeValue)返回我需要的字符串,但是我找不到将该字符串转换为任何类型的数字的方法。我需要以数字形式提供它,以便我可以用它进行计算。我尝试了Number()parseInt()等等。全部返回NaN。我对JS很新,所以希望这是一个容易解决的问题。

var siteActual = tdNodeListActual[36].textContent; // location of data
console.log(siteActual); // returns the value 1 as it should

var asd = Number(siteActual); // test variable to convert string to number
console.log(asd); // returns NaN
编辑:我检查.length是你建议的那个,它是2,所以那些说它可能是一个看不见的角色的人可能是对的。我正在尝试对SharePoint页面进行更改,这就是为什么我不熟悉标记的原因。有关如何删除所有数字的任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:2)

使用parseInt(...)

样品:

var siteActual = tdNodeListActual[36].textContent; // location of data
console.log(siteActual); // returns the value 1 as it should

var asd = Number(parseInt(siteActual)); // test variable to convert string to number
console.log(asd); // should return 1

答案 1 :(得分:2)

如果内容真的只是1parseInt应该如此),那么您的代码应该按原样运行。因此,您的内容中必须包含有效数字以外的内容。

有时可能会有您无法看到的内容,例如在下面的示例中,第二个td包含一个不可见的"零宽度空间"字符。



var tdNodeListActual = document.querySelectorAll("td");

var good = tdNodeListActual[0].textContent;
var bad = tdNodeListActual[1].textContent;

alert(good + "==" + Number(good) + ", but " + bad + "==" + Number(bad))

<table><tr>
  <td>1</td>
  <td>&#8203;2</td>
</tr></table>
&#13;
&#13;
&#13;

您可以使用正则表达式删除所有非数字字符(.,除外),例如:

siteActual = siteActual.replace(/[^\d.,]/g, '');