我有以下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>
我在互联网上搜索了可能的解决方案,但无法找到合适的解决方案。
提前致谢。
答案 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>";