Javascript - 在表格单元格中查找多个数值并将厘米转换为英寸
Posted
技术标签:
【中文标题】Javascript - 在表格单元格中查找多个数值并将厘米转换为英寸【英文标题】:Javascript - find multiple number values in table cell and convert from cm to inches 【发布时间】:2021-04-01 12:39:30 【问题描述】:我有这个 html 表格:https://jsfiddle.net/wt8dnkor/
我尝试做的是遍历所有元素 - 所有表格单元格,查找是否有字符串“cm”,如果有,则将值从 cm 转换为英寸。
所以我写了这段代码:
var allDivTd = document.getElementById("sizeadviser_content").getElementsByTagName("TD");
for(var i = 0; i < allDivTd.length; i++)
var td = allDivTd[i];
if (td.innerText.includes("cm") === true)
//td.innerText = td.innerText+' in';
如您所见,我只想更改字符串包含“cm”的单元格。
如何从单元格中获取数值并使用 1 位小数将其转换为英寸?
问题是因为我不知道单元格中有多少个数值。它们的格式可以是20cm or 20-50cm or 20 - 50 cm or 20 | 50 cm
...等。
【问题讨论】:
【参考方案1】:如果你需要一个非常快速的解决方案,你可以使用这样的东西
function setStr(str)
let digit = '';
let newStr = '';
for (let char of str)
if (!isNaN(char))
digit += char;
else
newStr += converter(digit)+ char;
digit = '';
return newStr.replace('cm', 'in');
function converter(s)
if (s)
return (parseInt(s)*0.393707).toString();
return '';
或使用正则表达式
function parseString(str)
var matcher = /\D+/;
var list = str.split(matcher);
list.forEach((item) =>
if (item)
str = str.replace(item, (parseInt(item)*0.393707).toString());
);
return str.replace('cm', 'in');
【讨论】:
你的答案非常好,只是像“96 - 104 cm”这样的字符串会像“37.8-40.9 in”这样返回我......所以空格不存在 抱歉,您的代码不能很好地处理十进制值 你也需要节省空间吗?【参考方案2】:这是一个适用于十进制值的版本:
for (var i = 0; i < allDivTd.length; i++)
var td = allDivTd[i];
if (td.innerText.includes("cm") === true)
new_td = td.innerText.replace('cm', '').replaceAll(' ', '');
for (let char of new_td)
if (isNaN(char) && char != ".")
new_td = new_td.replace(char, ",").split(',');
new_td.forEach(function(centim, index, myArray)
myArray[index] = (centim * 0.393701).toFixed(2);
);
new_td = new_td.toString().replace(',', ' - ') + ' in'
td.innerText = new_td;
【讨论】:
【参考方案3】:我认为你可以通过使用 split(/\D+/) 来使用正则表达式
检查我的例子
function gtnmbrs ()
var strng = '50 - 10 | 555 cm';
var nonnmbrs = /\D+/;
var rslt = strng.split(nonnmbrs);
for (i=0; i<rslt.length; i++)
document.write("<p>"+rslt[i]*0.39370+" inch</p>");
<p>Convert to:</p>
<input type="button" id="bt" value="Click it!" onclick="gtnmbrs()"/>
看看这个 sn-p 它可以帮助你只得到数字,然后将它从厘米转换为英寸
【讨论】:
抱歉,您的代码不能很好地处理十进制值以上是关于Javascript - 在表格单元格中查找多个数值并将厘米转换为英寸的主要内容,如果未能解决你的问题,请参考以下文章
通过用户输入和 Javascript 更改特定表格单元格中的文本