echo "<tr onclick='window.location=("www.google.com")'>
<td>something</td>
<td>something</td>
</tr>"
我已经编写了这样的代码,但它不起作用。我不知道在哪里放单引号和双qoutes。 我不知道如何在php中编写onclick 请建议我
答案 0 :(得分:4)
避免将echo
用于HTML。退出PHP模式并进入输出模式。
避免使用嵌套的文字值。将每种语言编写为单独的变量,使用合适的转义函数添加所需的引号,然后将它们放在一起。
通过将所有内容保持为单独的图层并一次处理一个图层,并通过使用函数而不是尝试手动编写转义,您可以更轻松地维护它们。
$url = "http://www.google.com";
$js_string_literal_url = json_encode($url);
$js = "window.location = $js_string_literal_url";
$html_safe_js = htmlspecialchars($js);
?>
<tr onclick="<?php echo $html_safe_js; ?>">
<td>something</td>
<td>something</td>
</tr>
那就是说,你也应该避免:
onclick
属性编写有效的HTML,然后使用JS进行增强。
如果你想链接某个地方:使用链接:
<tr>
<td><a href="http://www.google.com">something</a></td>
<td>something</td>
</tr>
如果要使该链接对整个表行起作用(使用JS),请绑定一个查找单击的事件侦听器,然后找到单击该行的第一个链接。
document.querySelector("table").addEventListener(follow_link_in_row);
function follow_link_in_row(event) {
var table_row = event.target;
while (table_row && table_row.tagName.toLowerCase() !== "tr") {
table_row = table_row.parentNode;
}
if (!table_row) { return; }
var link = table_row.querySelector("a[href]");
var url = link.href;
window.location = url;
}