JavaScript不能在php标签下工作

时间:2018-04-11 11:09:03

标签: javascript html

为什么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>";
?>

3 个答案:

答案 0 :(得分:3)

报价需要转义

  1. onclick=\"if (!confirm('Are you sure?')) return false;\"
  2. 更好onclick=\"return confirm('Are you sure?')\"
  3. 更好:从来没有GET链接删除东西,因为谷歌机器人的一个访问者会杀死你的数据库
  4. 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>";

    1. BEST:
    2. 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?')'不是。

希望它有所帮助。