获取javascript中的td textbox值 名称 数量 价格 阿迪达斯Kanadia TR 6-灰色/黑色 $129.00 PGF绅士神枪手高尔夫套装 $1,198.00 Puma连帽汗衫-粉色-女式 $80.00 总数: $1,407.00 合计

获取javascript中的td textbox值 名称 数量 价格 阿迪达斯Kanadia TR 6-灰色/黑色 $129.00 PGF绅士神枪手高尔夫套装 $1,198.00 Puma连帽汗衫-粉色-女式 $80.00 总数: $1,407.00 合计,javascript,Javascript,我已经在上面动态生成了HTML表。我的要求是在文本框中获得每个“数量”值,然后乘以“价格”,最后在底部显示总数。 有人能帮我用javascript来解决这个问题吗。请在以后的帖子中发布您尝试过的内容,更多的人会愿意帮助修复您的代码。有关如何发布带有代码的示例的更多详细信息。但是我尝试了一下上面的内容,并很快地编写了javascript。它显示了它将如何根据表中的内容更新总数 如果您重构HTML以使脚本编写更容易,那么会更好,但是以下内容基于对标记的最小更改 如果将表和按钮封装在表单中,并让按钮

我已经在上面动态生成了HTML表。我的要求是在文本框中获得每个“数量”值,然后乘以“价格”,最后在底部显示总数。
有人能帮我用javascript来解决这个问题吗。

请在以后的帖子中发布您尝试过的内容,更多的人会愿意帮助修复您的代码。有关如何发布带有代码的示例的更多详细信息。但是我尝试了一下上面的内容,并很快地编写了javascript。它显示了它将如何根据表中的内容更新总数


如果您重构HTML以使脚本编写更容易,那么会更好,但是以下内容基于对标记的最小更改

如果将表和按钮封装在表单中,并让按钮将自身引用传递给函数,则可以非常轻松地访问输入元素:

function getTotalPrice() {
    var subtotal = 0;
    $("#shoppingCartTable tr").each(function () {
        if( $(this).find('input[name="qty"]').length > 0 ) {
            qty = $(this).find('input[name="qty"]').val();
            price = Number($(this).find('#tdprice').text().replace(/[^0-9\.]+/g,""));
            subtotal += qty * price;
        }
    });
    $('#total').text("$" + subtotal.toFixed(2));
}

...
合计
一旦你有了这些,你可以得到数量和相关的价格,然后把它写进总单元格。以下内容取决于当前的DOM结构,如果需要,可以使其更加独立(我认为应该是这样)

下面的函数计算价格并将其放入总单元格。它使用了几个助手函数,但是是纯javascript,不依赖于大型库(主函数只比提供的jQuery解决方案长一行)

//使用textContent或innerText获取单元格中的文本,
//以支持的为准
函数getText(el){
if(type of el.textContent=='string'){
返回el.textContent;
}else if(type of el.innerText=='string'){
返回el.innerText;
}
}
//使用逗号分隔符格式化数字
// 1234567.99 -> 1,234,567.99
带逗号(x)的函数格式{
返回x.toString().replace(/\B(?=(\d{3})+(?!\d))/g,“,”;
}
函数getTotalPrice(el){
变量qtys=el.form.qty;
var合计=0;
var单元,inp,价格,行;

对于(var i=0,iLen=qtys.length;iSO不是免费的代码编写服务。请尝试自己编写代码,并发布您的尝试。然后我们将帮助您修复它,您将了解您的错误。
id
应该是唯一的,而不是使用
id
,为什么不将其更改为
class
?正如Se0ng11所说,您不能使用那样的id。您可以告诉我们对表和每行进行e处理以获取所需的元素,然后根据需要解析textContent或innerHTML以获取值。没有jQuery标记,OP也没有指出它的用途,因此您的答案不应该依赖于它(尤其是在没有指出依赖性的情况下)@RobG wat?你是想告诉我javascript和jQuery是两种不同的东西??亵渎!很快我们就可以用$(2+2)来得到总数。谢谢,因为我对javascript不熟悉,不知道如何开始。以后我会添加我的代码示例。
function getTotalPrice() {
    var subtotal = 0;
    $("#shoppingCartTable tr").each(function () {
        if( $(this).find('input[name="qty"]').length > 0 ) {
            qty = $(this).find('input[name="qty"]').val();
            price = Number($(this).find('#tdprice').text().replace(/[^0-9\.]+/g,""));
            subtotal += qty * price;
        }
    });
    $('#total').text("$" + subtotal.toFixed(2));
}
<form>
  <table border="1" id="shoppingCartTable">
    ...
  </table>
  <button type="button" onclick="getTotalPrice(this)">Get Total</button>
</form>
// Get the text in a cell using either textContent or innerText,
// whichever is supported
function getText(el) {
  if (typeof el.textContent == 'string') {
    return el.textContent;
  } else if (typeof el.innerText == 'string') {
    return el.innerText;
  }
}

// Formats a number with comma separators
// 1234567.99 -> 1,234,567.99
function formatWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

function getTotalPrice(el) {
  var qtys = el.form.qty;
  var total = 0;
  var cell, inp, price, row;
  for (var i=0, iLen=qtys.length; i<iLen; i++) {
    inp = qtys[i];
    cell = inp.parentNode;
    total += +getText(cell.parentNode.cells[cell.cellIndex + 1]).replace(/[^\d\.]/g,'') * inp.value;
  }
  row = cell.parentNode;
  row.parentNode.rows[row.rowIndex + 1].cells[1].innerHTML = '$' + formatWithCommas(total.toFixed(2));
}