【问题标题】:Get value of <li> element from value attribute从 value 属性获取 <li> 元素的值
【发布时间】:2016-12-22 07:26:20
【问题描述】:

我正在为一个学校项目开发一个小型网站。在一个页面上,我遍历了一个通过 SQL 查询填充的数组。数据会这样显示:

<ul class="list-group">
    <li class="list-group-item" name="id" value="36"><span class="badge">9999</span>Testval</li>
</ul>

li 元素的名称始终是静态的,但值是用 PHP 填充的。该值是指 DB 中的 ID。我正在尝试为如下所示的删除语句编写查询:

DELETE FROM `Kredit` WHERE ID=id;

当用户单击特定 li 元素上的删除按钮时,应检索 id。将有多个 li 元素,它们都有不同的 id。是否可以用 PHP 检索 value 属性中的 id?

我在 Stackoverflow 上搜索了这个问题,但在我的案例“testval”中,所有问题都是指 li 标签之间的值。

【问题讨论】:

  • 能否添加完整的 html 以及表单和删除按钮的设置位置?
  • 如果您想在 PHP 中执行此操作,您必须包含您的 PHP 代码

标签: javascript php html css sql


【解决方案1】:

在我看来,您需要 Javascript 来执行此操作,为此的 jQuery 代码将如下所示。我没有看到更具体的删除按钮,但我会解释代码并希望对你来说足够清楚。

$( "#delete" ).click(function() { // when delete is clicked
var id = $(this).attr("value");   // get id value of clicked li's delete
$.ajax({
        type: 'GET',
        cache: false,
        aysync: true,
        dataType: 'json',
        data: { delete : id},
        url: "ajax.php", // cal ajax.php with ?delete=123, use $_GET['delete']
        success: function(data){
            $(this).closest('li').remove(); // if ajax is done, remove this li
        }
});

这个例子是值 id,我不认为你想通过像 testval 这样的字符串而不是唯一的 id 在 DB 中搜索。

【讨论】:

  • 但是将 ID 存储在用户可以编辑的 HTML 中是否是个好主意?即使它不可见,也可以通过 F12 进行更改。
  • 同意你的观点,但用户也可以编辑文本值。权限是本问题未讨论的另一个问题
  • 您知道存储 ID 的更好方法吗?
【解决方案2】:

您可以使用.attr获取价值

$(document).ready(function () {
 $('.list-group-item').click(function () {
     alert($(this).attr("value"));
   });
});

value 不是valid attributeli,但您仍然可以获得value,但最好使用data-value

【讨论】:

  • O.P.表示他们想要获得testval 部分而不是value= 部分
  • @mike510a OP 从未声明过。OP 已明确要求获得价值部分。
  • 我猜你需要重新阅读最后一行,看看 op 与 id 匹配的查询
【解决方案3】:

不。您必须通过 ppost/ajax 将用户端 (js) 的值传递到后端 (php)。如果你有这样的事情:

<form action="action.php" method="post">
  <input name="id" id="submitter" value="00">
</form>
<li id="210">//your elem
... Another elems
<ul class="delete">Delete</ul>
</li>

让我们来看看我们的 js:

<script>
window.onload=function(){
Deleters=document.getElementsByClassName("delete");
 for(i=0;i<Deleters.length;i++){
 deleter=Deleters[i];
 deleter.onclick=function(){
 send(this.parentNode.id);//or .value
 //this gets the id of the parents node (the li elem)
 };
 }
 };
 function send(value){
 document.getElementById("submitter").value=value;
 document.forms[0].submit();
 }
 </script>

现在你需要一个 php 来处理(称之为 action.php):

<?php
$delid=$_POST["id"]
....

【讨论】:

    猜你喜欢
    • 2018-10-20
    • 2021-06-05
    • 2012-01-20
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多