JS- on单击多个内容


JS- onClick on multiple things

我有一个简单的表格,每行都有一个复选框。如果用户单击此复选框,它将使用onClick功能并通过JS将信息发送到另一个PHP文件以删除带有id = $id的ROW,它工作正常。当我单击多个复选框而不刷新站点时出现问题。

这是HTML的样子:

echo '<td><label class="checkbox-inline"><input type="checkbox" id="check" value="'.$row["id"].'" onClick="aa()"></label></td>';

JQuery是这样的:

function aa()
{
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET", "delete.php?id=" + document.getElementById("check").value, false);
    xmlhttp.send(null);
    document.getElementById("d1").innerHTML=xmlhttp.responseText;;
}

并完成我的.php文件:

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "DELETE FROM table1 WHERE id=$id";
    $conn->exec($sql);
    echo "Record deleted successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

仍然只是 amater,所以也许我想错了,但在我眼中,当用户点击 ChekBox 时,这个 JS 总是可以发送.php信息,那么为什么它不那样发送呢?

谢谢大家的建议。

问题就在这里:

input type="checkbox" id="check" ...

您为每个复选框提供 id"检查"。无论如何,这都会破坏事情,因为在 HTML 中,具有相同 ID 的页面上的元素不应超过元素。但这也意味着当你这样做时

document.getElementById("check")

它不知道你在说哪一行。

你不需要通过id获取元素;一个事件对象会自动传递给click函数,事件的目标将是复选框。

function deleteItem(e) {
    var box = e.target;
    var value = box.value;
    // delete the value ...
}

有关事件参数 (e) 的信息,请参阅 http://javascript.info/tutorial/obtaining-event-object

最简单的方法是将行的 ID 值发送到 onClick 方法中。 这样,您只需要在方法中进行服务调用,而无需同时查找值(并且您知道获得的值是正确的)。

echo '<td><label class="checkbox-inline"><input type="checkbox" id="check" value="'.$row["id"].'" onClick="aa('.$row["id"].')"></label></td>';

此外,请确保输入的 ID 属性值对于每一行都是唯一的,因为这会导致执行 ID 查找时出现问题。

你根本没有使用Jquery。您应该定义在每个复选框中执行单击时要执行的函数。

$('[type="checkbox"]').click(function()
{
  var sId = $(this).attr('id');
  // call you ajax with this sId as the ID
});

但请记住,您必须在脑海中插入带有脚本标签的 jquery 库。而且在加载 dom 时必须调用此代码。

我看到的主要问题是

document.getElementById("checkbox") 

它将始终引用相同的元素,并可能导致您的问题。 也许使用行 ID 将参数传递给 aa(),而不是使用元素的值,例如

echo (' ... onClick="aa('. $row["id"] .') ... ')