【问题标题】:Why I keep getting an "unexpected token" error on this line of code?为什么我在这行代码中不断收到“意外令牌”错误?
【发布时间】:2019-06-13 22:10:08
【问题描述】:

我正在使用 PHP 来输出信息行。我试图为每一行添加一个隐藏/显示。我“标识”了该行,然后添加了一个简单的文本“隐藏/显示”按钮,该按钮引用了标识的行并尝试切换“显示”属性。

我尝试转义引号,将它们更改为单引号,添加/删除括号。我很茫然。

echo "<table width=\"640\" style=\"margin-left: auto; margin-right: auto;\"><tr id=\"JEntry".$data['ID']."\" style=\"display: visible\"><td><button onmousedown=\"javascript: if (document.getElementById(\"JEntry".$data['ID']."\").style.display != \"visible\") { document.getElementById(\"JEntry".$data['ID']."\").style.display = \"visible\"; } else { document.getElementById(\"JEntry".$data['ID']."\").style.display = \"none\"; }\">Hide or Show</button>";

意外的令牌“}”

【问题讨论】:

  • 除了修正引号外,您还需要注意tr 元素不能将display 样式属性设置为visible,这不在可接受的值集合内这个元素。或者,将其设置为 ''(空字符串)以显示该行,或设置为 none 以隐藏它。

标签: javascript unexpected-token


【解决方案1】:

您的 PHP 代码很好。但是,生成的 HTML 需要对其属性进行转义。

例如,您的代码输出类似

<button onmousedown="javascript: if (document.getElementById("JEntry")) {}"></button>

如您所见,javascript 中的引号与属性值的引号相匹配。这将导致解析问题。

要解决这个问题,请在 javascript 中使用单引号

<button onmousedown="javascript: if (document.getElementById('JEntry')) {}"></button>

或逃避它们。

<button onmousedown="javascript: if (document.getElementById(\"JEntry\")) {}"></button>

在我看来,第一个选项看起来更简洁,特别是如果您考虑需要转义反斜杠 (\)。所以你的固定代码是

echo "<table width=\"640\" style=\"margin-left: auto; margin-right: auto;\"><tr id=\"JEntry".$data['ID']."\" style=\"display: visible\"><td><button onmousedown=\"javascript: if (document.getElementById('JEntry".$data['ID']."').style.display != 'visible') { document.getElementById('JEntry".$data['ID']."').style.display = 'visible'; } else { document.getElementById('JEntry".$data['ID']."').style.display = 'none'; }\">Hide or Show</button>";

阅读方式是非转义双引号 (") 是 PHP 的一部分,转义双引号 (\") 是 HTML 的一部分,单引号 (') 是 JS 的一部分。

【讨论】:

  • 这太完美了!谢谢你。我的头被引号和转义符打了个转,因为我的代码在使用 php 将 javascript 写入 HTML 标记时很复杂。您的帮助和描述很清楚,效果很好。此外,它还帮助我更好地应对挑战。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2021-05-29
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 2019-03-01
  • 2019-10-06
相关资源
最近更新 更多