如何将变量传递给动态创建的 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 函数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 EJS 模板引擎将变量传递给内联 javascript?