Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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,我正在从头开发一个香草javascript计算器。我能够完成数字和操作之间的分离,但一旦我将数组传递给另一个函数,该函数就因为某种原因根本无法工作。请注意,我是一名自学者,也是一名javascript初学者,所以我正在学习和练习。守则: //Index.js问题出在哪里 //此字段用于控制结果文本字段 var textfield=“”; //此函数用于将数字/操作按钮复制到文本字段 //它起作用了 函数重新运行编号(val){ 控制台日志(val); 如果(textfield!=“”){ te

我正在从头开发一个香草javascript计算器。我能够完成数字和操作之间的分离,但一旦我将数组传递给另一个函数,该函数就因为某种原因根本无法工作。请注意,我是一名自学者,也是一名javascript初学者,所以我正在学习和练习。守则:

//Index.js问题出在哪里
//此字段用于控制结果文本字段
var textfield=“”;
//此函数用于将数字/操作按钮复制到文本字段
//它起作用了
函数重新运行编号(val){
控制台日志(val);
如果(textfield!=“”){
textfield=textfield+val;
document.getElementById('result')。value=textfield;
}else if(textfield==“”){
textfield=val;
document.getElementById('result')。value=textfield;
}
}
//此函数用于清除文本字段
//它起作用了
document.getElementById('clear')。addEventListener(“单击”,函数(){
document.getElementById('result')。value=“”;
textfield=“”;
});
//这是要进行计算的函数,但是
//没什么
//不确定
函数结果(数字、运算){
var currentResult=数字[0];

对于(var i=0;i您正在为
textfield
赋值,但这只是一个字符串,不会自动显示在页面中

如果希望其值显示在页面中(按“等于”时),则可以使用:

document.getElementById('result').value = "some value";

请注意,您同时调用函数
结果(数字、操作)
两次,最好调用一次并存储结果。

另一种方法是使用函数

你可以像这样改变你的事件

document.getElementById('equal').addEventListener("click", function(){
    var elResult = document.getElementById('result');
    textfield = " ";
    elResult.value = eval(elResult.value);
})
或者(更好)你可以使用


e、 g

var newNum=true;
函数重新运行编号(val){
if(newNum){
document.getElementById('result')。value=val;
newNum=false
}否则{
document.getElementById('result')。value+=val;
}
}
document.getElementById('clear')。addEventListener(“单击”,函数(){
document.getElementById('result')。value=“”;
newNum=true;
});
document.getElementById('equal')。addEventListener(“单击”,函数(){
var elResult=document.getElementById('result');
newNum=true;
elResult.value=函数(''use strict';返回('+elResult.value+'))();
})
.grid容器{
显示:网格;
网格模板列:重复(3,1fr);
栅隙:10px;
}
.集装箱{
利润率:10%;
}
.项目1{
网格柱:1/5;
}
.项目2{
网格柱:2/4;
}
.项目3{
网格行:2;
网格柱:4;
}
.项目4{
网格行:3;
网格柱:4;
}
.项目5{
网格行:4;
网格柱:4;
}
.textField{
宽度:100%;
}

计算器
1.
2.
3.
4.
5.
6.
7.
8.
9
0
*
/
+
-
相等的
删除
清楚的

有几个小问题

  • }if(操作[i]='/'){
    需要是
    }else if(操作[i]='/'){
    添加
    else


  • for(var i=0;i值数组是一个字符串数组,因此必须将每个项转换为数字,使用
    parseInt

    /* here must be `else if` */
    
    } if(operations[i] == '/'){ 
            currentResult = currentResult / numbers[i+1];
        }else{
            currentResult = "Wrong";
        } 
    
    OBS:浮点数将出错。 优先权被忽略

    //Index.js问题出在哪里
    //此字段用于控制结果文本字段
    var textfield=“”;
    //此函数用于将数字/操作按钮复制到文本字段
    //它起作用了
    函数重新运行编号(val){
    如果(textfield!=“”){
    textfield=textfield+val;
    document.getElementById('result')。value=textfield;
    }else if(textfield==“”){
    textfield=val;
    document.getElementById('result')。value=textfield;
    }
    }
    //此函数用于清除文本字段
    //它起作用了
    document.getElementById('clear')。addEventListener(“单击”,函数(){
    document.getElementById('result')。value=“”;
    textfield=“”;
    });
    //这是要进行计算的函数,但是
    函数结果(数字、运算){
    var currentResult=parseInt(数字[0]);//首先,转换为数字
    对于(var i=0;iif(Number.isInteger(res)){/*==true这个条件:
    iThis;
    }else if(textfield==”){
    可以是一个
    }else{
    ,因为你知道在那一点上,文本化的
    等于
    @ziggywiggy我没有做任何改变:(现在我将尝试下一个注释This:
    }如果(operations[I]='/')){
    应该是
    }else if(operations[i]=='/'){
    ,否则下一个
    else
    将消除上面可能存在的任何条件。下面是我如何编写
    结果
    函数(只是一个首选项):
    函数结果(数字,操作){return operations.reduce((res,op,i)=>op='+'?res+数字[i+1]:op='-'?res-数字[i+1]:op='*'?res*数字[i]+
    
    /* here must be `else if` */
    
    } if(operations[i] == '/'){ 
            currentResult = currentResult / numbers[i+1];
        }else{
            currentResult = "Wrong";
        }