如何将变量传递给动态创建的 javascript onclick 函数? [关闭]

Posted

技术标签:

【中文标题】如何将变量传递给动态创建的 javascript onclick 函数? [关闭]【英文标题】:How to pass variables to a dynamically created javascript onclick function? [closed] 【发布时间】:2017-08-06 09:58:38 【问题描述】:

我正在尝试创建一个 onclick 事件,该事件使用 mysql ajax 查询的结果更新引导模式元素的值:

function UpdateModal($id)
  document.getElementById("modal_id").value=$id;


$results = GetMySQLResults();

button.onclick = function()

        UpdateModal($results[0]["id"]);


但是问题是当我点击按钮时它总是说“$result”是未定义的。

有没有办法在我不必动态创建模式的情况下解决这个问题?

【问题讨论】:

什么是$i?这可能是你的问题 什么是 $results - 假设 GetMySQLResults 实际上返回任何东西 GetMySQLResults 是异步的吗?我敢打赌,它是问题的根源! 使用 GetMySQLResults 的代码 @ibrahimmahrir 尽管它是异步的,但由于您的按钮单击事件不是异步的,它将如何影响每次。他特别提到每次他得到错误。我不认为异步需要几个小时才能得到响应。来源是拼写错误,看我的答案。 【参考方案1】:

看看..

$results = GetMySQLResults(); // You are collecting results into $results 

button.onclick = function()

  UpdateModal($result[$i]["id"]); // You are sending parameter from $result 


将参数更改为

 UpdateModal($results[$i]["id"]);

所以基本上你没有将任何结果收集到 $result 中,这就是你得到错误的原因..

基本上拼写错误$results 有实际值(假设GetMySQLResults())返回值,而UpdateModal 有参数$result 未定义..

【讨论】:

他在 $result 中添加了 's' 以使其成为 $results。我必须仔细阅读它才能注意到。 我添加到代码块和下面的语句中的 cmets 是否清楚...大声笑:) 结果有信息。问题是当用户点击按钮时,它说“results[$i]”是未定义的。 @ClemsonCoder 看起来您已经编辑了帖子,之前它是 $result。没关系,考虑发布您的完整 JS 功能...【参考方案2】:

修复它。问题是 $i 没有被声明,即使是,它也被更新到最后一个 $i 值,而不是迭代。还有一个问题是 $results 没有全局声明。

为了解决这个问题,我做了以下操作:

var $globalResults;

...

   button.id = $i;

   button.onclick = function(event)
   var $j = event.currentTarget.id;
      UpdateModal($globalResult[$j]["id"]);
   

【讨论】:

这就是我的评论所指的关于变量和函数声明范围的内容......如果对您有帮助,请考虑投票:)

以上是关于如何将变量传递给动态创建的 javascript onclick 函数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将javascript变量传递给django模板标签

如何将字符串变量传递给动态sql中的where子句

如何使用 EJS 模板引擎将变量传递给内联 javascript?

如何使用javascript动态地将json数组传递给数据表

如何将值从javascript变量传递给剃刀变量?

如何将 Django 变量传递给 Javascript