Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 想要转换字符串吗_Javascript - Fatal编程技术网

Javascript 想要转换字符串吗

Javascript 想要转换字符串吗,javascript,Javascript,因此,我有一段代码,试图在其中创建一个简单的计算器: 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 =

因此,我有一段代码,试图在其中创建一个简单的计算器:

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);


};
window.onload=function(){make_按钮('calc');}
功能生成按钮(id){
var parent=document.getElementById(id);
var输入=document.createElement(“输入”);
input.type='text';input.id='inp';
父.子(输入);
对于(变量i=0;i<10;i++){
var btn=document.createElement(“按钮”);
btn.innerHTML=i;
btn.id=i;
父、子(btn);
(函数(索引){btn.onclick=function(){input.value+=index;}}})(i);
}
var multiply=document.createElement(“按钮”);
multiply.innerHTML=“*”;
multiply.id=“*”;
父。子(乘法);
multiply.onclick=function(){input.value+='*';};
var divide=document.createElement(“按钮”);
divide.innerHTML=“/”;
divide.id=“/”;
父。子(除);
divide.onclick=function(){input.value+='/';};
var add=document.createElement(“按钮”);
add.innerHTML=“+”;
add.id=“+”;
父。子(添加);
add.onclick=function(){input.value+='+';};
var substract=document.createElement(“按钮”);
substract.innerHTML=“-”;
substract.id=“-”;
父项。追加子项(减号);
substract.onclick=function(){input.value+='-';};
var calc_it=document.createElement(“按钮”);
calc_it.innerHTML=“=”;
calc_it.id=“=”;
父.子(计算它);
calc_it.onclick=function(){calculate()};
};
函数计算(){
var info=document.getElementById('inp')。值;
控制台日志(信息);
};
所以现在,当我点击按钮,使输入字段中有5*5时,例如,var信息将等于一个字符串“5*5”。如何转换此字符串,使字符串中的数字为整数,而像*或-这样的运算符也为非字符串


我需要在这里包含一些正则表达式代码吗?

这个问题的答案确实很难。最明显和最不受欢迎的答案是评估,但很可能你不会想要它

基本上,您必须编写一个例程来提取要在表达式中使用的任何内容

如果不使用eval或第三方库,如“silentmatts”解决方案(见下文),您可能需要开发自己的例程来解析数据

第三方解决方案:

地点:

吉特:

说到这里,我个人使用eval将字符串转换成数学方程


希望这能有所帮助。

糟糕的做法:
eval('5*5')
…呃。。。我真的想避免那样。试试正则表达式。。。或者在变量后面加上数字,然后在任何运算符上按,将字符串变量转换为int或float。。。这样你将拥有所有的部分。。。这就像在计算器中键入表达式一样……不要认为eval总是邪恶的。在这里,一些javascript代码不可能滑入evaled表达式,该表达式是由按下按钮构建的,因此安全风险为===0。Eval是完美的。所以,如果我将字符串“*”转换为int,我就可以在计算中使用它了?好吧,我会尝试再做一些修改,看看我是否可以在没有Eval的情况下完成它。