永发信息网

简单js的问题

答案:2  悬赏:30  手机版
解决时间 2021-11-25 12:51
  • 提问者网友:最美的风景
  • 2021-11-24 19:48
简单js的问题
最佳答案
  • 五星知识达人网友:何以畏孤独
  • 2021-11-24 21:10
1.var con 后显示的是content.value的值 并不是content.value这个函数
btn.onclick=function (){
    var mValue=m.value;
    var con=content.value;
    console.log(typeof con);//string
    if(mValue>1){
        con=mValue*(mValue-1);
        console.log(con);//90
        console.log(typeof con);//number
    }else if(mValue===1){
        con=1;
    }else{
        alert("请输入一个非负整数!");
    }
}2.实现阶乘 可用下面这个函数
btn.onclick=function (){
    var mValue=m.value;
    if(mValue<1){
        alert("不能输入负值");
        return false;
    }
    var sum = 1;
    while (mValue){
        sum = sum*mValue--;
    }
    content.value = sum;
}
全部回答
  • 1楼网友:像个废品
  • 2021-11-24 22:27
if (mValue > 1) {
            content.value = mValue * (mValue - 1);
          } else if (mValue == 1) {
            content.value = 1;
          } else {
            alert("请输入一个非负整数!");
          }

最后几句

把con=mValue*(mValue-1);改成content.value

var con后,con已经是值了,不是对象

追问

嗯嗯,我修改了一下,可是阶乘部分求不出来,显示的错误是:Uncaught RangeError: Maximum call stack size exceeded...

追答

是栈溢出的问题,你的嵌套语句有问题

window.onload = function() {
        var m = document.getElementById("text");
        var btn = document.getElementById("button");
        var content = document.getElementById("result");
        btn.onclick = function() {
          var mValue = m.value;
          var con = content.value;
          if (mValue > 1) {
            content.value = jc(mValue);
          } else if (mValue == 1) {
            content.value = 1;
          } else {
            alert("请输入一个非负整数!");
          }

        }
        
        function jc(j){
          if(j==1){
            return 1;
          }else{
            return j*jc(j-1);
          }
        }

      }

如果要实现阶乘,这边另一个哥们写的很好了,用while语句简洁明了

btn.onclick=function (){
    var mValue=m.value;
    if(mValue<1){
        alert("不能输入负值");
        return false;
    }
    var sum = 1;
    while (mValue){
        sum = sum*mValue--;
    }
    content.value = sum;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯