簡體   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