鉴于这种情况,我必须使用节点列表来获取我需要使用的元素。我可以使用.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页面进行更改,这就是为什么我不熟悉标记的原因。有关如何删除所有数字的任何建议都会有所帮助。
答案 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)
如果内容真的只是1
(parseInt
应该如此),那么您的代码应该按原样运行。因此,您的内容中必须包含有效数字以外的内容。
有时可能会有您无法看到的内容,例如在下面的示例中,第二个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>​2</td>
</tr></table>
&#13;
您可以使用正则表达式删除所有非数字字符(.
和,
除外),例如:
siteActual = siteActual.replace(/[^\d.,]/g, '');