标签onclick中的html特殊字符

时间:2011-01-03 13:52:24

标签: javascript html

我有一个带onclick事件的标签,就像那样:

onclick="cl_showEvents({ 
    'posts' :     
    [{
        'CategoryName':'categoryName',
        'postID':'1',
        'title':'title',
        'address':'address',
        'time':'00:00'}]
    })"

它可以正常工作,直到发出转义序列,如下所示:

onclick="cl_showEvents({ 
    'posts' :     
    [{
        'CategoryName':'categoryName',
        'postID':'1',
        'title':'title',
        'address':'streetName st'',
        'time':'00:00'}]
    })"

我想念什么?

3 个答案:

答案 0 :(得分:1)

不是你的问题的答案 - 我不确定'是如何打破这种结构的 - 但这对于IMO标签来说太过分了。我建议将整个内容移到页面底部或load / DOMLoad事件中的单独脚本中。

Sans jQuery:

document.getElementById("your_element").onclick = function() 
  {
   cl_showEvents({ 
   'posts' :     
    [{
    'CategoryName':'categoryName',
    'postID':'1',
    'title':'title',
    'address':'streetName st'',
    'time':'00:00'}]
    })

  }

答案 1 :(得分:1)

在&符号前加一个反斜杠:

 'address':'streetName st\''

避免将实体&39;转换为它所代表的char。

答案 2 :(得分:1)

这不是因为角色是HTML编码的,只是因为它是一个撇号。当您使用撇号作为字符串分隔符时,您必须转义字符串中的撇号:

onclick="cl_showEvents({ 
  'posts' :     
  [{
    'CategoryName':'categoryName',
    'postID':'1',
    'title':'title',
    'address':'streetName st\'',
    'time':'00:00'}]
  })"

请注意,撇号不需要进行HTML编码,您只需使用常规撇号(并且看到这样的代码可以更明显地说明撇号需要转义的原因):

onclick="cl_showEvents({ 
  'posts' :     
  [{
    'CategoryName':'categoryName',
    'postID':'1',
    'title':'title',
    'address':'streetName st\'',
    'time':'00:00'}]
  })"