javascript - Qualtrics API 函数在 EventListener 中调用的自定义函数中不起作用
问题描述
我在标题部分定义了一个自定义函数,该函数检查、提醒用户并在特定滑动条未通过某些限制时重置它的值。
当点击问题时,这个函数可以很好地工作:
this.questionclick = chkVals;
我还想在用户退出文本输入字段时运行该功能(因为某些用户正在使用键盘进行调查)。我为每个滑块的文本输入字段实现了一个事件侦听器,当焦点不在文本输入字段时运行该函数。
// choices is an array of choice ids
for (i = 0; i < choices.length; i++) {
var x = document.getElementById(choices[i]);
x.addEventListener("blur", chkVals, true);
};
我知道事件侦听器有效,因为正在弹出正确的警报。它只是无法重置值,因为this.setChoiceValue
它不是环境中的功能。我已经尝试在函数中设置var that = this;
和调用that.setChoiceValue
,但它仍然不起作用。
任何帮助将不胜感激!
解决方案
@T。Gibbons 的回答帮助我达到了这一点。正如建议的那样,我需要添加一个参数chkVals()
才能引用该this
对象。然而,
this.questionClick = chkVals(this);
由于是保留对象而不起作用this
,因此整个头脚本将不会运行。我最终在我的自定义函数中更改了对this
to的所有引用,并按照建议添加了参数:that
that
function chkVals(that) {
...
... that.setChoiceValue(x, y)
}
要使用参数调用函数,我必须显式定义一个调用的匿名函数chkVals
,否则它将不起作用(我不知道为什么):
var that = this;
this.questionclick = function() {chkVals(that);}
for (i = 0; i < choices.length; i++) {
var x = document.getElementById(choices[i]);
x.addEventListener("blur", function() {chkVals(that);}, true);
};
以上有效!
推荐阅读
- ios - 在上传到应用商店之前创建我的应用的应用商店链接
- javascript - 无法使用 Jquery 替换文本
- javascript - findOneAndUpdate - 只返回数组中推送的项目
- php - 计算用TCPDF绘制的pdf文件中曲线的长度
- xml - 通过搜索 id 使用批处理脚本删除 xml 标记的文本数据中的一大块行
- angular - 尝试区分“[object Object]”时出错。角度中只允许使用数组和可迭代对象
- javafx - JavaFX 单元格样式
- c# - 将 .Net Core 项目发布到 Web,带有域和 1 个 SQL 数据库
- java - 大家好,我面临一些映射异常。我知道这是因为课堂上的不同领域,请提出一些克服它的方法
- java - 为什么我的 Apache Camel 模拟端点在测试中不起作用?