为什么我在此行代码中不断收到“意外令牌”错误?

时间:2019-06-13 22:10:08

标签: javascript unexpected-token

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

我尝试过转义引号,将其更改为单引号,添加/删除方括号。我不知所措。

foreach (DateTime day in monthDays)
{
    var t1 = new TextBox();
    t1.Location = new Point(Origin.X + 90, Origin.Y + 30 * Ycounter);
    t1.Size = new Size(40, 25);
    t1.MaxLength = 5;
    t1.Tag = day;
    AutoControls.Add(t1);
    Controls.Add(t1);

意外的令牌“}”

1 个答案:

答案 0 :(得分:2)

您的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的一部分。