javascript - 3层嵌入引号,JS函数不注册变量

标签 javascript php jquery html

代码看起来像这样:

<?php
 $page->startscript();
  echo "
    function f1(id){
        $('#def').html('<button class=\'btn btn-danger\' onclick=\'f2(id);\'>act</button>');
    }
    function f2(id){
        alert(id);
    }
  ";
 $page->endscript();
?>

startscript()endscript() 工作正常,它只允许我向页面添加 JS。不起作用的是 id 没有从 f1 转移到 f2,它只是返回空白。我认为这与引号有关,而不是被视为变量。如果我传递一个 int 作为 onclick 属性的参数,它就可以正常工作。

最佳答案

变量不会在 Javascript 中的字符串内展开(ES6 添加了“模板字符串”,支持这一点),您需要使用串联。假设 id 是一个字符串,您需要在函数调用中用引号将其引起来。

   echo"
      function f1(id){
          $('#def').html('<button class=\'btn btn-danger\' onclick=\'f2(\"' + id + '\");\'>act</button>');
      }
      function f2(id){
          alert(id);
      }
      ";

关于javascript - 3层嵌入引号,JS函数不注册变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37755372/

相关文章:

javascript - 点击时使用 Google Books API 获取 JSON 数据

javascript - 正在从 Web 浏览器控制台执行停止命令

$_GET 变量问题中的 PHP "&"字符

php - Codeigniter 从数据库中删除行

php - 有关如何生成 Oauth 随机数的安全问题

javascript - 使用 javascript/jquery 选中/取消选中复选框时从计数中添加和删除?

javascript - 如何根据按钮按下情况在 div 下显示表单

javascript - div parent 和两个 child ,在其他 child 中获取一个 child 的id

javascript - 当 Controller 返回时,从 javascript 在新选项卡中打开 View

javascript - jQuery Ajax 与类