在这种情况下,我必须使用节点列表来获取需要使用的元素。我可以使用.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页面进行更改,这就是为什么我不熟悉标记是什么的原因。关于如何删除除号码以外的所有号码的任何建议都将有所帮助。
如果内容确实是公正的,则您的代码应按原样工作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>
您可以使用正则表达式删除所有非数字字符(.
和除外,
),例如:
siteActual = siteActual.replace(/[^\d.,]/g, '');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句