如何使用JavaScript动态更改HTML表格内容

时间:2015-01-09 11:52:43

标签: javascript html5

var insert = document.getElementById('insertitem');
insert.addEventListener('click', function() {
  var table = document.getElementById('insertfirsttable'),
    itemType = prompt("Enter the item name"),
    filling1 = prompt("Enter the filling"),
    filling2 = prompt("Enter the filling"),
    filling3 = prompt("Enter the filling"),
    stock = prompt("Enter the amount in stock"),
    minimum_Stock = prompt("Enter the minimum amount of stock");

  for (var r = 0; r < 1; r += 1) {
    var x = document.getElementById('insertfirsttable').insertRow(r);
    for (var c = 0; c < 10; c += 1) {
      var y = x.insertCell(c);
    }

    table.rows[r].cells[0].innerHTML = itemType;
    table.rows[r].cells[1].innerHTML = filling1;
    table.rows[r].cells[2].innerHTML = filling2;
    table.rows[r].cells[3].innerHTML = filling3;
    table.rows[r].cells[4].innerHTML = stock;
    table.rows[r].cells[5].innerHTML = minimum_Stock;
    table.rows[r].cells[9].innerHTML = '<button id="sellbtn" style="width:102px; height: 25px; font-size:18px; cursor:pointer">Sell</button>';
    table.rows[r].cells[9].style.width = "100px";
    var sellBtn = document.getElementById("sellbtn");
  }
  //problem is here i guess
  sellBtn.addEventListener("click", function() {
    var sell = prompt("Enter the stock amount you're selling"),
      total = stock - sell;
    for (var t = 0; t < table; t += 1) {
      for (var c = 0; c < table.cells.length; c += 1) {}
      table.rows[t].cells[4].innerHTML = total;

    }
  });
});
body {
  margin: 0;
  padding: 0;
  background-color: #E6E6E6;
  font-size: 20px;
}
table {
  border-spacing: 1px;
  width: 100%;
}
th {
  padding: 1px;
}
#firsttablediv {
  width: 100%;
}
#firsttable {
  color: white;
  background-color: green;
}
#insertitem {
  width: 100%;
  padding: 2px;
  font-size: 20px;
  cursor: pointer;
}
#insertfirsttable > tr {
  background-color: #31B404;
}
<html>

<body>
  <div id="firsttablediv">
    <table id="firsttable" border="1">
      <thead>
        <th>Item</th>
        <th colspan="3">Filling</th>
        <th>Storage</th>
        <th>Minimum Stock</th>
        <th>Last Inventory</th>
        <th>Sell</th>
        <th>Last Month Inventory</th>
        <th colspan="2">
          <button id="insertitem">New Item</button>
        </th>
      </thead>
      <tbody id="insertfirsttable">
      </tbody>
    </table>
  </div>

伙计们,我正在为我父亲的商店写一份申请表。他想要一个应用程序来管理他的项目,无论如何,在你点击插入项目按钮并输入细节之后。然后将该项目放在一行,其中每个细节都在其相应的单元格中,该行中还出现一个名为“Sell”的按钮,如果某个项目已经售出,则按下它并询问您有多少该项目出售?你键入数字,然后输入,它应该从该数字中减去股票编号,并在该行的股票单元格中输入新的数字,但我似乎不知道该怎么做。

3 个答案:

答案 0 :(得分:4)

JavaScript区域:

document.getElementById('test1').innerHTML = 'Night';

HTML区域:

<td id="test1">Day</td>

JavaScript代码将更改为

夜晚值也可以替换为 HTML代码

例如<b>Night</b>

Source

答案 1 :(得分:1)

这里有一些你可以改进的东西。首先,您不需要for循环只执行一次:

for (var r = 0; r < 1; r += 1) {

摆脱这个循环。

那么如何掌握刚插入的行?幸运的是,Table.insertRow()返回对插入的行的引用。所以你可以这样做:

var row = document.getElementById('insertfirsttable').insertRow();
row.cells[0].innerHTML = itemType;
//and so on

另请注意,您无需将索引传递给insertRow(),因为在表的末尾会自动添加一行。如果您想在开头使用它,请使用insertRow(0)。 见这里:https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow/

正如詹姆斯在评论中指出的那样,你不能给所有按钮提供相同的ID。在这种情况下,您将如何获得添加监听器的按钮的引用?最好使用document.createElement()创建元素,然后返回引用。

var button = document.createElement("button");
row.cells[9].appendChild(button);

button.addEventListener("click", function(){
   var sell = prompt("Enter the stock amount you're selling"),
   total = stock - sell;

   // we still have a reference to row here because we are in a closure.
   row.cells[4].innerHTML = total;
});

答案 2 :(得分:0)

不使用从卖出值中减去的'stock',而是根据ID从行中获取'stock'元素,转换为数字然后减去。

对于像这样的东西,有一种叫做JQuery的东西。你可以尝试一下。具体来说,.on() method将在此处运作。通常动态添加按钮时,事件处理程序不会挂钩到新按钮。这将导致您的代码停止工作。所以使用JQuery on()方法代替。

ID也应该是唯一的。因此,为按钮创建唯一的ID值可能正在使用索引。