我对JavaScript很陌生,而且我目前正在尝试在我的Qualtrics调查中添加一个自定义代码,这使得按键空格键继续调查“文本/图形”问题类型。我有一个应该正常工作的代码;但是,我收到了一个“意外的令牌(”错误。
以下是代码:
Qualtrics.SurveyEngine.addOnload(function()
{
document.addEventListener("keydown", function(e) {
if (e.keyCode === 32) {
function(){
that.clickNextButton();
}
}
}
});`
我在几年前也找到了类似问题的答案:
这是一个有效的简化版本(更新为隐藏NextButton):
Qualtrics.SurveyEngine.addOnload(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 13) $('NextButton').click();
});
});
然而,这段代码在我的调查中根本不起作用(好像它甚至没有)。
非常感谢任何帮助,提前谢谢!
____编辑_____
我现在使用的代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
/*Place your JavaScript here to run when the page loads*/
});
Qualtrics.SurveyEngine.addOnReady(function()
{
/*Place your JavaScript here to run when the page is fully displayed*/
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 32) $('NextButton').click();
});
});
});
Qualtrics.SurveyEngine.addOnUnload(function()
{
/*Place your JavaScript here to run when the page is unloaded*/
});
我现在遇到的问题是,每当我按下前一个问题之前按空格键,研究就会自动进行下一个问题。
示例
问题1:您刚看到的句子是否是前一句的合理延续?
*参与者在回答问题之前按空格键,F表示否,J表示是
*该研究提醒参与者他们需要在继续下一个问题之前回答问题
*参与者回答问题,研究自动进入下一个问题,因为回答验证了问题
- >该研究只让参与者看到下一个项目一秒钟,然后自动进入下一个项目,而参与者不按任何键。
我用于F + J键的代码如下:
Qualtrics.SurveyEngine.addOnload(function()
{
this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
var choiceID = null;
switch (e.keyCode) {
case 74: // 'f' was pressed
choiceID = 2;
break;
case 70: // 'j' was pressed
choiceID = 1;
break;
}
if (choiceID) {
Event.stopObserving(document, 'keydown', keydownCallback);
that.setChoiceValue(choiceID, true);
that.clickNextButton();
}
});
});
答案 0 :(得分:1)
我认为由于时间问题,它不起作用。请改用addOnReady:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
document.on("keydown", function(e) {
if (e.keyCode === 32) $('NextButton').click();
});
});
注意:使用分屏预览模式,您必须先在窗口中单击,否则它将无法识别按键。
修改强>
我无法重新创建您的问题(当我尝试时,您的代码就像我一样工作)。但是,请尝试以下操作。它更清洁,更一致。如果有效,一定要接受答案。
空格键问题:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
if($('PreviousButton')) $('PreviousButton').hide();
var evt = document.on('keydown', function(e) {
if (e.which == 32) { //space bar pressed
evt.stop();
$('NextButton').click();
}
});
});
是/否问题:
Qualtrics.SurveyEngine.addOnReady(function() {
$('NextButton').hide();
if($('PreviousButton')) $('PreviousButton').hide();
var that = this;
var evt = document.on('keydown', function(e) {
var choiceID = null;
if(e.which == 70) choiceID = 1; //'f' was pressed
else if(e.which == 74) choiceID = 2; //'j' was pressed
if (choiceID) {
evt.stop();
that.setChoiceValue(choiceID, true);
$('NextButton').click();
}
});
});
答案 1 :(得分:0)
您需要删除function()
周围的that.clicknextbutton()
,并将that
更改为this
。除非that
是设置为this
关键字的变量,否则function(){}
没有任何意义。 Qualtrics.SurveyEngine.addOnload(function(){
document.addEventListener("keydown", function(e) {
if (e.keyCode === 32) {
this.clickNextButton();
}
});
});
语法用于在参数中定义表达式。
public static void main(String[] args) {
DragonEscape game = new DragonEscape();
frame.setTitle(title);
frame.setSize(1000, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.add(new Graphicsa());
frame.add(game);
}