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

时间:2018-05-31 09:46:43

标签: javascript jquery

我有以下HTML文件。我试图将项目对象传递给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 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

只需更改行

即可
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>";