Javascript-在表格单元格中查找多个数值,并将其从厘米转换为英寸
我有这个HTML表格: 我尝试做的是循环所有元素-所有表格单元格,查找是否有字符串“cm”,如果是,则将值从cm转换为英寸 所以我写了这段代码:Javascript-在表格单元格中查找多个数值,并将其从厘米转换为英寸,javascript,html,regex,loops,dom,Javascript,Html,Regex,Loops,Dom,我有这个HTML表格: 我尝试做的是循环所有元素-所有表格单元格,查找是否有字符串“cm”,如果是,则将值从cm转换为英寸 所以我写了这段代码: var allDivTd = document.getElementById("sizeadviser_content").getElementsByTagName("TD"); for(var i = 0; i < allDivTd.length; i++){ var td = allDivTd
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位小数将其转换为英寸
问题是因为我不知道单元格中有多少数值。它们的格式可以是20厘米、20-50厘米、20-50厘米或20 | 50厘米。。。等等。我想你可以使用split/\D来使用regx+/ 看看我的例子 功能gtnmbrs{ 变量strng='50-10 | 555厘米'; var nonnmbrs=/\D+/; var rslt=strng.splitnonnmbrs;
对于i=0;i我认为您可以使用split/\D来使用regx+/ 看看我的例子 功能gtnmbrs{ 变量strng='50-10 | 555厘米'; var nonnmbrs=/\D+/; var rslt=strng.splitnonnmbrs;
对于i=0;i如果您需要一个非常快速的解决方案,您可以使用这样的方法
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');
}
如果您需要一个非常快速的解决方案,您可以使用这样的解决方案
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');
}
以下是适用于十进制值的版本:
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;
}
}
以下是适用于十进制值的版本:
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;
}
}
你的答案很好,比如96-104厘米的字符串返回我37.8-40.9英寸,所以空格不在这里。对不起,只是你的代码不能很好地使用十进制值。你也需要保存空格吗?你的答案很好,比如96-104厘米的字符串返回我37.8-40.9英寸,所以空格不在这里。对不起,只是你的代码不能很好地使用h十进制值是否也需要保存空格?抱歉,您的代码与十进制值不兼容。或者,您的代码与十进制值不兼容