繁体   English   中英

Escaping 在 html 中的引号内引用

[英]Escaping quotes inside quotes in html

不知道为什么这个错误发生在 Chrome 和 Edge 中,但不是在 IE 中(是的,业务团队仍然坚持它)

在此 html 行上看到“Uncaught SyntaxError: Unexpected end of input”

<TR onmouseover="rowColor(this, true);" onmouseout="rowColor(this, false);" onclick='workTicket('displayTicket.action?TICKETID=1367698&amp;TTID=14','1367698');'>   

以下是对应的jsp/struts行

<TR onmouseover="rowColor(this, true);" onmouseout="rowColor(this, false);" onclick='workTicket(<c:out value="'displayTicket.action?TICKETID=${dispTO.ticketNbr}&TTID=${dispTO.ticketTypeId}','${dispTO.ticketNbr}'" />);'>

除了 onclick 属性以单引号开头之外,我在上面的行中没有看到任何错误。 知道为什么会这样吗?

您必须在属性中包含一组完整的 OTHER 引号

<TR onmouseover="rowColor(this, true);" 
 onmouseout="rowColor(this, false);" 
  onclick="workTicket('displayTicket.action?TICKETID=1367698&amp;TTID=14','1367698');">   

c没有问题:out

<TR onmouseover="rowColor(this, true);" 
onmouseout="rowColor(this, false);" 
onclick="workTicket(<c:out value="'displayTicket.action?TICKETID=${dispTO.ticketNbr}&TTID=${dispTO.ticketTypeId}','${dispTO.ticketNbr}'" />);">

将工作

但我认为这更好

data-tickettypeid="<c:out value="${dispTO.ticketTypeId}" />"
data-ticketnbr="<c:out value="${dispTO.ticketNbr}" />"
onclick="workTicket(`displayTicket.action?TICKETID=${this.dataset.tickettypeid}&TTID=${this.dataset.ticketnbr}`,this.dataset.tickettypeid)"

甚至更好:

document.getElementById("myTable").addEventListener("click",function(e) {
  const tgt = e.target.closest("tr");
  if (tgt && tgt.getAttribute("data-tickettypeid")) {
    workTicket(`displayTicket.action?TICKETID=${tgt.dataset.tickettypeid}&TTID=${tgt.dataset.ticketnbr}`,tgt.dataset.tickettypeid)
  }
})

那么你可以使用

<tr data-tickettypeid="<c:out value="${dispTO.ticketTypeId}" />"
data-ticketnbr="<c:out value="${dispTO.ticketNbr}" />">

至于鼠标悬停和移出,使用 CSS

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM