JavaScript JQuery为什么没有正确引用按钮的ID

时间:2017-11-25 09:01:00

标签: javascript jquery html firebase web

您好,谢谢您的时间。

我有一个疑问,因为我正在尝试将我正在从Firebase数据库中读取的ID与标识按钮的ID相关联。这很重要,因为这个按钮引导我们进入事件的修改页面,因此事件的ID就是我们用来加载数据的ID。

然而,这些按钮的ID看起来像是一个向前的位置,让我们看看:

button's IDs

正如您所见,按钮0具有ID Ejemplo nuevo,这是以下行的事件,依此类推。

活动: events

代码: code

功能代码:

   function insertPlans() {
        setReferences();
        $("#title").html("Planes");
        resetAllData();

        $("#table thead").html("<tr>" +
            "<td>ID</td> <td>Capacidad</td> <td>Fecha</td> <td>Descripción</td> <td>Ubicación</td> " +
            "<td>Título</td> <td>Organizador</td> <td>Precio</td> <td>Prioridad</td><td>Asistentes</td>" +
            "<td>Visibilidad</td></tr>");

        dbRef.child('plans').once('value', function (snap) {
            snap.forEach(function (planID) {
                dbRef.child('plans/' + planID.key.toString()).once('value', function (snap) {
                    var row = "<tr><td><button id='new-button' class='btn btn-primary' onclick='saveEventName(this.id)'>Modificar evento</button>" + planID.key.toString() + "</td>";
                    $("#new-button").attr('id', planID.key.toString());
                    snap.forEach(function (fields) {
                        row += "<td>" + fields.val() + "</td>";
                    });
                    $("#table").find("tbody").append(row + "</tr>");
                });
                $("#table").find("tbody").append("</tr>");
            });
        });
    }

此外,如果我执行控制台日志:

console log

打印正确的ID:

perfect IDss

你能帮我吗?

2 个答案:

答案 0 :(得分:1)

$('#new-button')始终引用上一行,因为我们尚未将row附加到文档。

您可以先插入row然后使用选择器更改其ID

答案 1 :(得分:0)

感谢您的帮助。正如你所说,我正在编辑上一行,因为当前没有添加到文档中。

解决方案:

function insertPlans() {
        setReferences();
        $("#title").html("Planes");
        resetAllData();

        $("#table thead").html("<tr>" +
            "<td>ID</td> <td>Capacidad</td> <td>Fecha</td> <td>Descripción</td> <td>Ubicación</td> " +
            "<td>Título</td> <td>Organizador</td> <td>Precio</td> <td>Prioridad</td><td>Asistentes</td>" +
            "<td>Visibilidad</td></tr>");

        dbRef.child('plans').once('value', function (snap) {
            snap.forEach(function (planID) {
                dbRef.child('plans/' + planID.key.toString()).once('value', function (snap) {
                    var row = "<tr><td><button id='new-button' class='btn btn-primary' onclick='saveEventName(this.id)'>Modificar evento</button>" + planID.key.toString() + "</td>";
                    snap.forEach(function (fields) {
                        row += "<td>" + fields.val() + "</td>";
                    });
                    $("#table").find("tbody").append(row + "</tr>");
                    $("#new-button").attr('id', planID.key.toString());
                });
                $("#table").find("tbody").append("</tr>");
            });
        });
    }