求助如何用 js 计算字符串数学公式生成结果

xiong820716087 2016-04-19 10:53:38
如题,如何通过一个字符串的数学计算公式,获取相对应文本框中的值来进行计算,比如 (A+B+C)*D/E 是一个字符串其中ABCDE分别代表一个文本框中的值,请问如何通过解析这个字符串获取对应的五个文本框中的值,并且按照这个计算顺序进行相应计算得出最终的值呢, 分数不多,请各位大神进行指导!
...全文
2626 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2016-04-20
  • 打赏
  • 举报
回复
引用 3 楼 xiong820716087 的回复:
[quote=引用 1 楼 jslang 的回复:]

<input type="text" id="text1" value="4" />
<input type="text" id="text2" value="9" />
<input type="text" id="text3" value="5" />
<input type="text" id="text4" value="6" />
<input type="text" id="text5" value="2" />
<input type="button" value="计算" onclick="func();" />
<script type="text/javascript">
function func() {
	var str = "(A+B+C)*D/E";
	var A = parseFloat(document.getElementById("text1").value);
	var B = parseFloat(document.getElementById("text2").value);
	var C = parseFloat(document.getElementById("text3").value);
	var D = parseFloat(document.getElementById("text4").value);
	var E = parseFloat(document.getElementById("text5").value);
	var num = eval(str);
	alert(num);	
}
</script>
你好,这个方法是可以的,但是如果文本框的id就是字符串中包含的ABCDE且文本框数量不固定,文本框数量与字符串中的变量数相对应,我该如何生产相对应的变量呢?[/quote]

<input type="text" id="A" value="4" />
<input type="text" id="B" value="9" />
<input type="text" id="C" value="5" />
<input type="text" id="D" value="6" />
<input type="text" id="E" value="2" />
<input type="button" value="计算" onclick="func();" />
<script type="text/javascript">
function func() {
	var str = "(A+B+C)*D/E";
	var str2 = str.replace(/[a-z]+/ig,function (id) {
		return document.getElementById(id).value;
	});
	alert(str2);
	var num = eval(str2);
	alert(num);	
}
</script>
xiong820716087 2016-04-19
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:

<input type="text" id="text1" value="4" />
<input type="text" id="text2" value="9" />
<input type="text" id="text3" value="5" />
<input type="text" id="text4" value="6" />
<input type="text" id="text5" value="2" />
<input type="button" value="计算" onclick="func();" />
<script type="text/javascript">
function func() {
	var str = "(A+B+C)*D/E";
	var A = parseFloat(document.getElementById("text1").value);
	var B = parseFloat(document.getElementById("text2").value);
	var C = parseFloat(document.getElementById("text3").value);
	var D = parseFloat(document.getElementById("text4").value);
	var E = parseFloat(document.getElementById("text5").value);
	var num = eval(str);
	alert(num);	
}
</script>
你好,这个方法是可以的,但是如果文本框的id就是字符串中包含的ABCDE且文本框数量不固定,文本框数量与字符串中的变量数相对应,我该如何生产相对应的变量呢?
cocotsau 2016-04-19
  • 打赏
  • 举报
回复 1
原生eval函数,自动解析并计算,你值得拥有! var string = "(A+B+C)*D/E"; eval(string);
天际的海浪 2016-04-19
  • 打赏
  • 举报
回复

<input type="text" id="text1" value="4" />
<input type="text" id="text2" value="9" />
<input type="text" id="text3" value="5" />
<input type="text" id="text4" value="6" />
<input type="text" id="text5" value="2" />
<input type="button" value="计算" onclick="func();" />
<script type="text/javascript">
function func() {
	var str = "(A+B+C)*D/E";
	var A = parseFloat(document.getElementById("text1").value);
	var B = parseFloat(document.getElementById("text2").value);
	var C = parseFloat(document.getElementById("text3").value);
	var D = parseFloat(document.getElementById("text4").value);
	var E = parseFloat(document.getElementById("text5").value);
	var num = eval(str);
	alert(num);	
}
</script>

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧