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

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

誰能向我解釋為什么我的變量“sum”沒有計算數組“arrPrice”的總和?

誰能向我解釋為什么我的變量“sum”沒有計算數組“arrPrice”的總和?

侃侃無極 2023-11-12 15:29:48
arrPrice我想查看表格最后一個單元格中數組中值的總和。但該sum變量只是保留我插入表中的最后一個值。有人可以向我解釋為什么會發生這樣的事情嗎?我創建表行的風格有問題嗎?function insert() {  var i = 0;  var t = 0;  var c = 0;  var sum = 0;  var arrName = [];  var arrPrice = [];    arrName[i] = document.getElementById("name").value;  arrPrice[i] = document.getElementById("price").value;  var table = document.getElementById("tabl3");  var row = table.insertRow(1);  var cell1 = row.insertCell(0);  var cell2 = row.insertCell(1);  cell1.innerHTML = arrName[i];  cell2.innerHTML = arrPrice[i];  i++;  while (t < arrPrice.length) {    arrPrice[t] = arrPrice[t] * 1;    sum = sum + arrPrice[t];    t++;  }  document.getElementById("totalprice").innerHTML = sum;}table,th,td {  border: 1px solid black;  border-spacing: 0px;  width: 150px}Name: <input type="text" id="name"><br> Price: <input type="number" id="price"><br><button id="ins" onclick="insert()">Insert</button><p>&nbsp;</p><table id="tabl3">  <tr>    <td>Item</td>    <td>Price</td>  </tr>  <tr>    <td>Total</td>    <td id="totalprice"></td>  </tr></table>
查看完整描述

3 回答

?
犯罪嫌疑人X

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

您將重置arrPrice每次運行,這會將其設置為最新的元素。一種解決方案是使數組成為全局數組并在函數調用中附加到它:


var arrPrice = [];

function insert() {

  var i = 0;

  var t = 0;

  var c = 0;

  var sum = 0;

  var arrName = [];

  

  arrName[i] = document.getElementById("name").value;

  arrPrice.push(document.getElementById("price").value);


  var table = document.getElementById("tabl3");

  var row = table.insertRow(1);

  var cell1 = row.insertCell(0);

  var cell2 = row.insertCell(1);


  cell1.innerHTML = arrName[i];

  cell2.innerHTML = arrPrice[i];

  i++;


  while (t < arrPrice.length) {

    arrPrice[t] = arrPrice[t] * 1;

    sum = sum + arrPrice[t];

    t++;

  }


  document.getElementById("totalprice").innerHTML = sum;

}

編輯:我看到很多人評論說你sum每次都在設置。雖然更改此設置將使您的代碼正常工作,但邏輯已被破壞。您的方法是創建一個數組并在每次調用時對其進行求和insert,而不是添加到運行總和中。我認為其他答案正在尋找快速修復方法,并且不介意破壞現有代碼的邏輯。


查看完整回答
反對 回復 2023-11-12
?
神不在的星期二

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

sum每次插入新值時都會重置。每次嘗試重新計算。無需循環


function insert() {

 

  let insertedName = document.getElementById("name").value;

  let insertedPrice = parseFloat(document.getElementById("price").value);


  var table = document.getElementById("tabl3");

  var row = table.insertRow(1);

  var cell1 = row.insertCell(0);

  var cell2 = row.insertCell(1);


  cell1.innerHTML = insertedName;

  cell2.innerHTML = insertedPrice;

  

  const totalPrice = document.getElementById('totalprice');

  totalPrice.innerText = parseFloat(totalPrice.innerText || "0") + insertedPrice;

}

table,

th,

td {

  border: 1px solid black;

  border-spacing: 0px;

  width: 150px

}

Name: <input type="text" id="name"><br> Price: <input type="number" id="price"><br>

<button id="ins" onclick="insert()">Insert</button>

<p>&nbsp;</p>

<table id="tabl3">

  <tr>

    <td>Item</td>

    <td>Price</td>

  </tr>

  <tr>

    <td>Total</td>

    <td id="totalprice"></td>

  </tr>

</table>


查看完整回答
反對 回復 2023-11-12
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

在你的函數中你所做的sum = 0。所以每次當你調用你的函數時,你的總和就會變成0。要解決這個問題,只需使你的sum全局。只需將其放在您的函數之外即可。



查看完整回答
反對 回復 2023-11-12
  • 3 回答
  • 0 關注
  • 234 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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