为什么Javascript无法在以下行中运行?
<?php
echo "<a href='admin-advertiser-delete.php?supplier=$row[adv_id]' onclick='if (!confirm('Are you sure?')) return false;'><i class='fa fa-times'></i></a>";
?>
答案 0 :(得分:3)
报价需要转义
onclick=\"if (!confirm('Are you sure?')) return false;\"
onclick=\"return confirm('Are you sure?')\"
echo "<a href='javascriptneeded.html' onclick=\"if (confirm('Are you sure?')
location = 'admin-advertiser-delete.php?supplier=$row[adv_id]';
return false;\"><i class='fa fa-times'></i></a>";
echo "<a href='javascriptneeded.html' class='deleteAdv' data-id='$row[adv_id]'><i class='fa fa-times'></i></a>";
使用
document.querySelectorAll(".deleteAdv").forEach(function(link) {
link.onclick=function() {
if (confirm("Are you sure") {
location = "admin-advertiser-delete.php?supplier="+encodeURIComponent(this.getAttribute("data-id"));
}
return false;
}
});
答案 1 :(得分:1)
你没有逃避你的报价。在这部分:
onclick='if (!confirm('Are you sure?')) return false;'
html解析器看到&#39;之前&#34; 你确定&#34;作为结束语,因此将其解释为:
onclick='if (!confirm('
因此,你应该逃避你的报价,它应该有效:
onclick='if (!confirm(\'Are you sure?\')) return false;'
答案 2 :(得分:0)
我建议您使用HEREDOC语法来解决转义引号的问题:
<?php
echo <<<EOD
<a href='admin-advertiser-delete.php?supplier={$row[adv_id]}' onclick='if (!confirm("Are you sure?")) return false;'><i class='fa fa-times'></i></a>
EOD;
?>
请参阅文档链接:http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
请注意,您不需要转义引号,但您需要使用正确的引号:
onclick='confirm("Ok?")'
是正确的,onclick='confirm('Ok?')'
不是。
希望它有所帮助。