代码之家  ›  专栏  ›  技术社区  ›  Subhayan Bhattacharya

如何使用jquery将javascript对象传递给另一个函数

  •  1
  • Subhayan Bhattacharya  · 技术社区  · 6 年前

    我有下面的html文件。我正试图将item对象传递给javascript函数:linkclickfunc,以便进一步处理它。

    但是我不能用下面的语法来做。有人能告诉我我做错了什么吗?

        <div class="container">
      <h2>CodeConfig Keys</h2>
      <br>
      <div id="key-buttons">
      </div>
    </div>
    
    <script type="text/javascript">
    function linkClickFunc(item)
    {
      console.log(item);
    }
    </script>
    
    <script>
    $(document).ready(function(){
        CodeConfigkeys = {"ENV": [{"NAME": "Subhayan", "Values": [{"AGE": 33, "SEX": "Male"}]}, {"NAME": "Mary", "Values": [{"AGE": 29, "SEX": "Female"}]}], "DB_PARAMS": [{"NAME": "SQL_CONNECTIONS_DB", "Values": "templates"}, {"NAME": "SQL_CONNECTIONS_COLLECTION", "Values": "dbtemplates"}]};
        var html_str = "";
        $.each( CodeConfigkeys, function( key, value ){
        html_str = html_str + "<div class=\"btn-group dropdown\">";
        html_str = html_str + "<button type=\"button\" class=\"btn btn-primary dropdown-toggle btn-primary-spacing\" data-toggle=\"dropdown\" id=\"" + "CodeConfigMenus" + "\">" + key;
        html_str = html_str + "</span><span class=\"sr-only\">Toggle Dropdown</span></button>";
        html_str = html_str + "<div class=\"dropdown-menu\">";
        value.forEach(function(item, index, array) {
        console.log(item);
        console.log (typeof item);
        html_str = html_str + "<li><a onclick=\"linkClickFunc($(" + "'" + item + "'" + "));\">" + item["NAME"] + "</a></li>";
        });
        html_str = html_str + "</div></div>";
        });
        console.log(html_str);
        $("#key-buttons").html(html_str);
    
    });
    </script>
    

    我在网上寻找可能的解决办法,但没有找到正确的办法。

    提前谢谢。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Bhumi Shah    6 年前

    换个台词

    html_str = html_str + "<li><a onclick=\"linkClickFunc($(" + "'" + item + "'" + "));\">" + item["NAME"] + "</a></li>";
    

    具有

    html_str = html_str + "<li><a onclick='linkClickFunc("+JSON.stringify(item)+")'>" + item["NAME"] + "</a></li>";
    
        2
  •  1
  •   Nap    6 年前

    使用json.stringify()将对象作为字符串传递。当然,您需要转义双引号才能被识别为真正的双引号。 json.stringify(项)

    html_str = html_str + "<li><a onclick=\"linkClickFunc($(" + "'" + JSON.stringify(item) + "'" + "));\">" + item["NAME"] + "</a></li>";
    

    然后对于函数,将json对象解析回字符串。 json.parse(项)

    function linkClickFunc(item)
    {
      var obj = JSON.parse(item);
      console.log(item);
    }
    

    我没有测试过代码,但是您应该处理字符串转换和解析的双引号。