我使用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);
意外的令牌“}”
答案 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的一部分。