所以我有这个代码,我试图创建一个简单的计算器:
window.onload = function () {make_buttons ('calc'); }
function make_buttons (id) {
var parent = document.getElementById(id);
var input = document.createElement("input");
input.type = 'text'; input.id = 'inp';
parent.appendChild(input);
for (var i = 0;i < 10; i++){
var btn = document.createElement ("button");
btn.innerHTML = i;
btn.id = i;
parent.appendChild(btn);
(function(index) {btn.onclick = function() {input.value += index;}})(i);
}
var multiply = document.createElement ("button");
multiply.innerHTML = "*";
multiply.id = "*";
parent.appendChild(multiply);
multiply.onclick = function () {input.value += '*';};
var divide = document.createElement ("button");
divide.innerHTML = "/";
divide.id = "/";
parent.appendChild(divide);
divide.onclick = function () {input.value += '/';};
var add = document.createElement ("button");
add.innerHTML = "+";
add.id = "+";
parent.appendChild(add);
add.onclick = function () {input.value += '+';};
var substract = document.createElement ("button");
substract.innerHTML = "-";
substract.id = "-";
parent.appendChild(substract);
substract.onclick = function () {input.value += '-';};
var calc_it = document.createElement ("button");
calc_it.innerHTML = "=";
calc_it.id = "=";
parent.appendChild(calc_it);
calc_it.onclick = function () {calculate ()};
};
function calculate () {
var info = document.getElementById ('inp').value;
console.log(info);
};
所以现在当我单击按钮并使输入字段内部有5 * 5时 - var info将等于字符串“5 * 5”。我怎么能转换这个字符串,以便字符串中的数字是整数,像*或 - 这样的运算符也将是非字符串?
我是否需要在此处添加一些正则表达式代码?
答案 0 :(得分:1)
这个问题的答案确实很难。显而易见且最不受欢迎的答案是评估,但很可能你不会想要这样。
基本上,您必须编写例程来提取要在表达式中使用的任何内容。
如果不使用eval或第三方库,例如'silentmatts'解决方案(如下),您可能需要开发自己的例程来解析数据。
第三方解决方案:
网站:http://silentmatt.com/javascript-expression-evaluator/
Git:https://github.com/silentmatt/js-expression-eval
所有这些都表示,就将字符串转换为数学方程式而言,我个人使用eval。
希望这有帮助。