通过HTML字符串传递JS对象

时间:2014-07-23 16:23:46

标签: javascript html

在通过HTML String将JS对象传递给JS方法时遇到问题。这是HTML字符串的一部分:

onclick='addGrpMember("+c+"); return false;'

当我点击调用此方法时,我看到:意外的标识符

我可以很容易地传入这个c Object a la:

的属性
onclick='addGrpMember(\""+ c.contactName +"\",\""+ c.displayName +"\"); return false;'

这很好用。

我在这里缺少什么?顺便说一句,“c”作为arg传递给方法。 (我正在执行此代码)。

感谢您提供任何有用的提示!

更新了完整代码:

contact = "<tr><td style='width:60px; padding:12px 6px' title='"+ c.contactName +"'><span class='contactAvatar'><img src='<%= context %>/app/user/image?loginName="+ c.contactName +"' alt='' /></span></td><td style='padding-top:12px'><span class='contactTitle'>"+ c.displayName +"</span><br/><span class='contactTitleCompany'>"+c.title+ " at " +c.companyName+"</span><br/><a href='mailto:"+c.contactName+"'><i class='icon-envelope'></i> "+c.contactName+"</a></td><td style='padding-top:30px;padding-right:10px;text-align:right'><a href='#' data-toggle='tooltip' data-placement='right' title data-original-title='Add Member' onclick='addGrpMember("+c+"); return false;' class='addIcon'></a></td></tr>";

方法:

   function addGrpMember( c ){
selectedGroup.members.push( c );
populateSearchResults( selectedGroup.members, 'groups' );}

3 个答案:

答案 0 :(得分:1)

您需要将c转换为JSON字符串。假设您在JavaScript中创建此字符串。

onclick='addGrpMember("+JSON.stringify(c)+"); return false;'

JSON.stringify是IE 8 +。

有了这样说......可能有更好的方法来做你想要做的事情,但是如果没有看到你的整个方法,我们就不能真正评论那么多。通常内联JavaScript不是可行的方法。

答案 1 :(得分:0)

我认为,无需连接字符串或提取对象元素,只需将此代码放在按钮事件onClick上

onclick='addGrpMember(c); return false;'

如果c是你的javascript对象

答案 2 :(得分:0)

它应该只传递对象变量名称:

<button onClick="addGrpMember(c);">Add Group Member</button>

然后在您的JavaScript中,例如:

var c = {
    contactName : "value1",
    displayName : "value2"
};

var addGrpMember = function (groupMember) {
    // Do something with the group member
    return false;
};

这是一个有着类似代码的工作小提琴:http://jsfiddle.net/vgF8C/