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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

僅當我添加第二個 getElementbyId 時,javascript 才會連接數字

僅當我添加第二個 getElementbyId 時,javascript 才會連接數字

UYOU 2023-12-04 19:20:31
請不要將此標記為重復。與下面的類似,但又不一樣。我看過:Javascript 連接數字,而不是相加 : 如何將兩個字符串像數字一樣相加? 并且: innerHTML 返回帶有文本的 NaN這是我的代碼:<!doctype html><html><head><meta charset="UTF-8"><title>My Web Page</title><form action="PayslipServlet" method="get">          First Number:    <input type="text" name="n1" id="n1"><br/>          Second Number:   <input type="text" name="n2" id="n2"><br/>          Sum: <span id="Sum"></span>          <br>          <input type="button" value="Submit" onClick="pr()">        </form>        <script>          function pr() {            var foobar = 100;            <!-- works -->            <!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value  ; works -->            <!-- works -->            <!-- document.getElementById("Sum").innerHTML = +document.getElementById('n2').value  ; works -->            <!-- works -->            <!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +foobar  ; -->            <!-- concatenates as strings: why? -->            document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +document.getElementById('n2').value  ;          }        </script></head>問題陳述:當我將 n1 反饋給 sum 時,有效(請參閱注釋行) 當我將 n2 反饋給 sum 時,有效 當我將 n1+foobar 反饋給 sum 時,有效但是,當我將 n1+n2 反饋給 sum 時,我得到一個連接字符串(例如 1+2 變成 12,而不是 3)。我究竟做錯了什么?
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

您需要在將兩個值相加之前將它們轉換為數字,這樣您將得到加法而不是串聯。

document.getElementById("Sum").innerHTML = +document.getElementById('n1').value + +document.getElementById('n2').value  ;


查看完整回答
反對 回復 2023-12-04
?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

您需要使用 parseInt 指令將輸入值轉換為 int 數據類型。這是代碼:


    <script>

      function pr() {

        var foobar = 100;

        <!-- works -->

        <!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value  ; works -->

        <!-- works -->

        <!-- document.getElementById("Sum").innerHTML = +document.getElementById('n2').value  ; works -->

        <!-- works -->

        <!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +foobar  ; -->

        <!-- concatenates as strings: why? -->

        document.getElementById("Sum").innerHTML = parseInt(document.getElementById('n1').value) +parseInt(document.getElementById('n2').value)  ;

      }

    </script>


查看完整回答
反對 回復 2023-12-04
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

你+在那里使用兩種不同類型的 s 。前兩個:


<!-- works -->

<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value  ; works -->

<!-- works -->

<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n2').value  ; works -->

執行的操作是leftSide = +expression


這是一元加運算符,它將非數字強制轉換為數字。


在第三個中:


<!-- works -->

<!-- document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +foobar  ; -->

執行的操作是leftSide = +expression1 + expression2


使用一元加expression1將其轉換為數字。但and+之間不是一元加法,而是加法/串聯。當在兩個表達式之間使用時,如果兩者都是數字,則它們會相加。在這里,在 的一元加之后,它是一個數字,并且也是一個數字,所以它們被加在一起。expression1expression2+.valuefoobar


但在


document.getElementById("Sum").innerHTML = +document.getElementById('n1').value +document.getElementById('n2').value

現在,正確的表達式是字符串而不是數字。+僅當兩邊都是數字時才相加。someNumber + someString結果串聯。


如果要加,+請先確保兩邊都是數字。


查看完整回答
反對 回復 2023-12-04
  • 3 回答
  • 0 關注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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