【问题标题】:How to get the ID of a tag in JavaScript如何在 JavaScript 中获取标签的 ID
【发布时间】:2018-12-08 14:33:57
【问题描述】:

所以我正在制作一个网站,用户可以在其中向他们的个人资料页面添加兴趣。在个人资料页面上,我打印了数据库中的所有兴趣(标签)。现在我正在尝试制作一个 onclick 功能,以便当用户点击 a 标签时,它会移动到 mytags 并且有效。但我也想将 user_id 和 interest_id 保存到我的名为 gebruiker_interesses 的连接表中。

(在 adminData[i] 里面有 interesses 表里面的所有数据。 我的兴趣表如下所示:

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);
}

所以我正在尝试获取我单击的 (Var) 标记的 id (ID_INTERESSE),以便我可以执行查询并将数据插入到名为 gebruiker_interesse 的连接表中,但我不知道该怎么做。 任何形式的帮助表示赞赏

【问题讨论】:

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


    【解决方案1】:

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

      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);
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-06
        相关资源
        最近更新 更多