从数据库中提取一些表达式 如 parseInt(xx) xx.toUpperCase() xx是表单元素标签
我想要通过这些表达式和表达元素算出想要的值。js代码是这样
//formName表单的名字 evExp表达式
function translateExp(formName, evExp) {
var formObj = document.forms[formName];
var replaceValue = null, elem = null;
var regexp = null;
for (var i = 0, n = formObj.elements.length; i < n; i++) {
elem = formObj.elements[i];
if (elem.name && elem.name != undefined && elem.name != "") {
replaceValue = "$('" + elem.name + "').value";
regexp = new RegExp(elem.name, "gi");
evExp = evExp.replace(regexp, replaceValue);
}
}
return evExp;
}现在的情况是这样,表达式是parseInt(wbys)+ parseInt(ys) 表单中也有名字为wbys和ys的输入框。循环表单元素wbys之后 变成 parseInt($(wbys).value)+ parseInt(ys) 。但是循环ys的时候会变成 parseInt($(wb$(ys).value).value)+ parseInt($(ys).value)。正确的解析应为parseInt($(wbys).value)+ parseInt($(ys).value)。起初我打算匹配(wbys) 。regexp = new RegExp("("+elem.name+")", "gi");但是会遇到类似wbys.toUpperCase() 解析后$(wbys).value.toUpperCase() 或者weys=zt的表达式解析后变成
$(wbys).value=$(zt).value这个表达式应该怎么写 求解
我想要通过这些表达式和表达元素算出想要的值。js代码是这样
//formName表单的名字 evExp表达式
function translateExp(formName, evExp) {
var formObj = document.forms[formName];
var replaceValue = null, elem = null;
var regexp = null;
for (var i = 0, n = formObj.elements.length; i < n; i++) {
elem = formObj.elements[i];
if (elem.name && elem.name != undefined && elem.name != "") {
replaceValue = "$('" + elem.name + "').value";
regexp = new RegExp(elem.name, "gi");
evExp = evExp.replace(regexp, replaceValue);
}
}
return evExp;
}现在的情况是这样,表达式是parseInt(wbys)+ parseInt(ys) 表单中也有名字为wbys和ys的输入框。循环表单元素wbys之后 变成 parseInt($(wbys).value)+ parseInt(ys) 。但是循环ys的时候会变成 parseInt($(wb$(ys).value).value)+ parseInt($(ys).value)。正确的解析应为parseInt($(wbys).value)+ parseInt($(ys).value)。起初我打算匹配(wbys) 。regexp = new RegExp("("+elem.name+")", "gi");但是会遇到类似wbys.toUpperCase() 解析后$(wbys).value.toUpperCase() 或者weys=zt的表达式解析后变成
$(wbys).value=$(zt).value这个表达式应该怎么写 求解
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script language="javascript">
function tra() {
//alert(exp.value.replace(/\bYS\b/gi, "123"));
alert(exp.value.replace(new RegExp("\\bYS\\b", "gi"), "$(YS)"));
}
</script>
</head>
<body>
<input type="text" id="exp" disabled value="ZYS = PAGENUM + YS + WBYS + YS1 + YS2 " style="width:350px;">
<br><button onclick="tra()">将表达式中的YS字段替换为$(YS)</button>
</body>
</html>
这就是解决方式