亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么會這樣

<!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進階篇
  • 參與學習       468832    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

為什么會這樣

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號