我正在为餐厅构建一个站点,并使用 php 和 mysql 在表单中动态构建一个表来显示每个菜单项。每行都有一个数量输入,然后是项目和描述等,最后以“添加到订单”按钮结束。我需要做的是在按下按钮时,将商品的数量和 ID 发送到 session 变量。我看到过使用数组作为输入 ID 的建议,但我不确定如何处理它们。
$d=date('N');
$sql2="CALL SP_GET_MENU_ITEM('entree', '$d');";
$result=mysql_query($sql2, $conn2);
if(!$result)
die(mysql_error());
$count=0;
while($row=mysql_fetch_assoc($result)){
$n=$row['itemName'];
$de=$row['description'];
$i=$row['ingredient'];
$p=$row['price'];
$dr=$row['dietRestrict'];
$f=$row['path'];
/*$pic="CALL SP_GET_MENU_IMAGE('$n');";
$picTry=mysql_query($pic, $conn);
$picResult=mysql_fetch_assoc($picTry);
$f=$picTry['path'];*/
print '<tr><td>
<input type="number" min="1" name="quantity" style="width:40px;" /></td>
<td class="itemDes">';
print "<h2>".$n."</h2>";
print "<img src='../admin/menu/".$f."' alt='foodPic'></td>";
print "</td><td><p>description: ".$de."<br>ingredients: ".$i."</td><td>".$dr."</td><td>".$p."</td></p></td><td>
<input type='button' onclick= 'doit()' value='Add to Order' class='btn'/>
}
它现在正确地填充了表格,并且函数 doit() [它只是调用一个警报] 在按下任何按钮时正确调用。我在想我必须将变量传递给它,即 <onclick="doit(quantity.value))">
那我怎么才能得到quantity.value
上类??
最佳答案
您可以使用“this”访问当前元素,因此如果您使用 doit(this.value),this.value 将等于“Add to Order”
从这里您可以使用 dom 方法在相关上下文中查找元素。很难从您的代码中判断出来,因为我没有 HTML 的全貌,但您可以试试这个:
doit(this.parentElement.parentElement.firstElementChild.firstElementChild.value)
这会得到你的按钮的容器,它是一个 td,然后得到它的容器,它是一个 tr,然后得到它的第一个子元素,它是那个 tr 包含的第一个 td,然后输入量的第一个子项的值。 (你的头在旋转吗?)
关于javascript - 如何使用表从动态构建的表单中捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33655619/