为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会这样

<!DOCTYPE html>
<html>
 <head>
  <title> 事件</title> 
  <script type="text/javascript">
   function count(txt1,txt2,select){

    switch(select) {
        case "+":
           result = parseFloat(txt1) + parseFloat(txt2);
            break;
        case "-":
            result = parseFloat(txt1) - parseFloat(txt2);
            break;
        case "*":
            result = parseFloat(txt1) * parseFloat(txt2);
            break;
        default:
            result = parseFloat(txt1) / parseFloat(txt2);
    }
    document.getElementById("fruit").value = parseFloat(result);
   
   }
  </script>
 </head>
 <body>
   <input type='text' id='txt1' />
   <select id='select'>
     <option value='+'>+</option>
  <option value="-">-</option>
  <option value="*">*</option>
  <option value="/">/</option>
   </select>
   <input type='text' id='txt2' />
   <input type='button' value=' = ' onclick=count() /> /通过 = 按钮来调用创建的函数,得到结果
   <input type='text' id='fruit' />  
 </body>
</html>

https://img1.sycdn.imooc.com//5d5a5ba80001c7c904480092.png

正在回答

3 回答

按照你写的代码,你获取到的值为undefined所以你不管怎么点=号,都只会得出NaN。

用代码表示你的情况:

<!DOCTYPE html>
<html>
 <head>
  <title> 事件</title>  
  <script type="text/javascript">
var c = parseFloat(a) + parseFloat(b);
document.write(a + "和" + b + "的和等于" + c);
  </script> 
</head> 
<body>
</body>
</html>

正确的代码应为

<!DOCTYPE html>
<html>
 <head>
  <title> 事件</title>  
  <script type="text/javascript">
   function count(){
    var txt1 = document.getElementById("txt1").value;  //这里是获取id名txt1里value的值
    var txt2 = document.getElementById("txt2").value;  //这里是获取id名txt2里value的值
    var select = document.getElementById("select").value;  //这里是获取id名select里value的值
    var result;  //这里是声明一个变量
    switch(select) {
        case "+":
           result = parseFloat(txt1) + parseFloat(txt2);
            break;
        case "-":
            result = parseFloat(txt1) - parseFloat(txt2);
            break;
        case "*":
            result = parseFloat(txt1) * parseFloat(txt2);
            break;
        default:
            result = parseFloat(txt1) / parseFloat(txt2);
    }
    document.getElementById("fruit").value = parseFloat(result);
    
   }
  </script> 
 </head> 
 <body>
   <input type='text' id='txt1' /> 
   <select id='select'>
     <option value='+'>+</option>
  <option value="-">-</option>
  <option value="*">*</option>
  <option value="/">/</option>
   </select>
   <input type='text' id='txt2' /> 
   <input type='button' value=' = ' onclick=count() /> /通过 = 按钮来调用创建的函数,得到结果
   <input type='text' id='fruit' />   
 </body>
</html>


0 回复 有任何疑惑可以回复我~
#1

sdarks

额,没仔细看代码,回答有问题。 因为你的tex1、tex2和select没获得值,所以它们的值默认为undefined。然后因为switch的条件都不满足,所以只会运行default:result = parseFloat(txt1) / parseFloat(txt2);。这时txt1和txt2值都是undefined,而parseFloat(txt1)为NaN,所以运行后得到的result值也只会是NaN,而最后输出的parseFloat(result)也只会是NaN。
2019-08-30 回复 有任何疑惑可以回复我~

result   没有定义,他不是一个数字所以会报这样的问题,你可以在switch上面定义一下,

方法一:var sum = Number("");或者方法二:var sum = 0;


function count() {

//获取第一个输入框的值

var first = document.getElementById("txt1").value;

//获取第二个输入框的值

var second = document.getElementById("txt2").value;

//获取选择框的值

var sel = document.getElementById("select").value;

if (!isNaN(first) && !isNaN(second)) {

//方法一:

//var sum = Number("");

//方法二:

var sum = 0;

switch (sel) {

case "+":

sum += parseFloat(first) + parseFloat(second);

break;

case "-":

sum += parseFloat(first) - parseFloat(second);

break;

case "*":

sum += parseFloat(first) * parseFloat(second);

break;

case "/":

sum += parseFloat(first) / parseFloat(second);

break;

default:

}

document.getElementById("fruit").value = sum;

} else {

console.log("输入的不是数字");

}

}



0 回复 有任何疑惑可以回复我~

输入框的两个值你没有获取,以及符号的那个选择框的值你也没获取

 function count(){

       

    //获取第一个输入框的值

    var num1=document.getElementById("txt1").value;

//获取第二个输入框的值

var num2=document.getElementById("txt2").value;

//获取选择框的值

var fuhao=document.getElementById("select").value;

var sum

//获取通过下拉框来选择的值来改变加减乘除的运算法则

switch(fuhao){

    case "+":sum=parseInt(num1)+parseInt(num2);

    break;

    case "-":sum=num1-num2;

    break;

    case "*":sum=num1*num2;

    break;

    case "/":sum=num1/num2;

    break;

    default:

    

}

    //设置结果输入框的值 

    document.getElementById("fruit").value=sum;

   }


1 回复 有任何疑惑可以回复我~
#1

SunCool 提问者

你仔细看一下好吗,如果没有获取,那我点击“=”的时候为什么会有Nan显示出来,我的问题是为什么它显示的是nan而不是一个数字,这应该是一个数据类型的问题
2019-08-20 回复 有任何疑惑可以回复我~
#2

当妮走了 回复 SunCool 提问者

用parseInt()函数啊
2019-08-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript进阶篇
  • 参与学习       468044    人
  • 解答问题       21891    个

本课程从如何插入JS代码开始,带您进入网页动态交互世界

进入课程

为什么会这样

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信