将数据从表行获取到Javascript

将数据从表行获取到Javascript,javascript,html,function,jsp,html-table,Javascript,Html,Function,Jsp,Html Table,我有一张桌子。有三列:名称、价格和按钮“下订单”。我必须从每一行获取数据到Javascript。每个输入都有id,如productName和productPrice。 表代码: <table border="2px"> <tr> <th>Name</th> <th>Price</th> </tr> <c:forEach items="${productList}" var="product" varStat

我有一张桌子。有三列:名称、价格和按钮“下订单”。我必须从每一行获取数据到Javascript。每个输入都有id,如productName和productPrice。 表代码:

<table border="2px">
<tr>
<th>Name</th>
<th>Price</th>
</tr>
<c:forEach items="${productList}" var="product" varStatus="status">
<tr>
    <form>
    <td> ${product.getProductName()}</td>
    <input type="hidden" id="productName" name="productName" value=${product.getProductName()}>
    <td>${product.getPrice()}</td>
    <input type="hidden" id="productPrice" name="productPrice" value=${product.getPrice()}>
    <td><input type="submit" onclick="makeOrder()" value="Make Order"></td>
    </form>
</tr>
  </c:forEach>
  </table>

名称
价格
${product.getProductName()}
${product.getPrice()}
还有我的js:

<script type="text/javascript">
function makeOrder() {
    var n=document.getElementById("productName").value;
    var p=document.getElementById("productPrice").value;
    alert("n="+n);
    alert("p="+p);
    //var win=window.open("/user/makeOrder?productName=" + n + "&productPrice=" + p);
}

函数makeOrder(){
var n=document.getElementById(“productName”).value;
var p=document.getElementById(“productPrice”).value;
警报(“n=”+n);
警报(“p=”+p);
//var win=window.open(“/user/makeOrder?productName=“+n+”&productPrice=“+p”);
}

但当我点击我的按钮时,我总是提醒我表格的第一行。
我怎样才能通知其他行

您可以调用一个函数,该函数以名称productName提供所有输入,请参见下文

var n=document.getElementsByName("productName").value;
var p=document.getElementsByName("productPrice").value;
for(var i = 0; i < n.length; i++) {
    alert("row 1: " + n[i].value + p[i].value);
}
var n=document.getElementsByName(“productName”).value;
var p=document.getElementsByName(“productPrice”).value;
对于(变量i=0;i

这将返回您的所有行。每个警报将显示1行的数据。

为每行使用唯一的行id,并使用makeOrder()函数传递该id,然后在该行中查找id在函数中传递的子元素

下面是一个工作示例

函数makeOrder(rowId)
{
var n=document.getElementById(rowId).childNodes[5]。值;
var p=document.getElementById(rowId).childNodes[9].值;
警报(“n=”+n);
警报(“p=”+p);
//var win=window.open(“/user/makeOrder?productName=“+n+”&productPrice=“+p”);
}

名称
价格
P1
$5
P2
$6

但在按钮“提交我的页面”过载后,地址字符串将向右更改。这意味着更改后的数据不会传递给我的jsNo,我不需要返回所有行。当我点击按钮时,我只需要返回一行。啊,看看这个答案,这样你就可以得到被点击的按钮,从那里你应该可以通过兄弟姐妹找到你想要的数据。是的,它起作用了。但是我不知道我的桌子上会有多少行。我尝试这样做:
但是我得到了相同的结果-只有第一行在两个位置使用相同的。。。对于tr
对于按钮
我得到错误:未捕获类型错误:无法读取null的属性'childNodes',请检查html,并查看是否在
makeOrder()
中为每个按钮打印了id??在单个QOUTS之间打印
${product.getProductName()}
,如下图所示
makeOrder('product_NANE')