如何在JavaScript中获取标签的ID

时间:2018-12-08 14:33:57

标签: javascript mysql node.js model-view-controller sql-insert

因此,我正在建立一个网站,用户可以在其中添加兴趣到其个人资料页面。在个人资料页面上,我从数据库中打印了所有兴趣(标签)。现在,我试图创建一个onclick函数,以便当用户单击a标记时,该标记会移动到mytags上并且可以正常工作。但是我也想将user_id和interest_id保存到名为gebruiker_interesses的联结表中。

(在adminData [i]内部,所有的数据都在interesses表内。 我的Interesse表看起来像这样:

PK: ID_INTERESSE
    INTERESSE

这是我打印所有标签(兴趣)的功能

   function interessesPrinten() {
        var query = "SELECT * FROM interesses";
        var adminData = Array();

        databaseManager
            .query(query)
            .done(function (data) {
                console.log(data.length);

                var ul = profielView.find('.tags');

                for (var i = 0; i < data.length; i++) {
                    adminData[i] = data[i];
                }

                for (var i = 0; i < adminData.length; i++) {
                    var li = $("<li>")
                        .addClass("tag")
                        .html(adminData[i].INTERESSE)
                        .on("click", function() {
                            addToMyTags($(this));
                        });

                    ul.append(li);
                }
            })
            .fail(function (err) {
                console.log(err);
            });
    }

如您所见,在函数内部我创建了一个onclick函数:

.on("click", function() {
                            addToMyTags($(this));
                        });

这就是我制作名为addToMyTags的onclick函数的方式:

 function addToMyTags(element) {
        var tag = element.text();
    console.log(tag);

      var interesse_ID = //?? I don't know how to get the id 
      var gebruiker_ID = [session.get('gebruiker_id')];
      console.log(gebruiker_ID);
      console.log(interesse_ID);
      databaseManager
          .query("INSERT INTO GEBRUIKER_INTERESSE (ID_INTERESSE, ID_GEBRUIKER)  VALUES (?)", [interesse_ID, gebruiker_ID])

    $(".mytags").append(element);
}

因此,我试图获取单击的id(Var)的ID(ID_INTERESSE),以便执行查询并将数据插入名为gebruiker_interesse的联结表中,但我不知道该怎么做。 任何帮助表示赞赏

2 个答案:

答案 0 :(得分:0)

您可能应该将“ id”作为数据属性存储在“ li”上,并使用以下方法访问它:Getting data-* attribute for onclick event for an html element

答案 1 :(得分:0)

在您的初始循环中,将id输出到data属性:

  function interessesPrinten() {
    var query = "SELECT * FROM interesses";
    var adminData = Array();

    databaseManager
        .query(query)
        .done(function (data) {
            console.log(data.length);

            var ul = profielView.find('.tags');

            for (var i = 0; i < data.length; i++) {
                adminData[i] = data[i];
            }

            for (var i = 0; i < adminData.length; i++) {
                var li = $("<li>")
                    .addClass("tag")
                    .data('interesse_id', adminData[i].INTERESSE_ID)
                    .html(adminData[i].INTERESSE)
                    .on("click", function() {
                        addToMyTags($(this));
                    });

                ul.append(li);
            }
        })
        .fail(function (err) {
            console.log(err);
        });
}

...然后再访问它:

function addToMyTags(element) {
    var tag = element.text();
    console.log(tag);

    var interesse_ID = element.data('interesse_id'); // get the id 
    var gebruiker_ID = [session.get('gebruiker_id')];
    console.log(gebruiker_ID);
    console.log(interesse_ID);
    databaseManager.query("INSERT INTO GEBRUIKER_INTERESSE (ID_INTERESSE, ID_GEBRUIKER)  VALUES (?)", [interesse_ID, gebruiker_ID])

$(".mytags").append(element);
}