问题标签 [jspsych]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
183 浏览

javascript - setInterval,最后一个元素和最后一个元素之前的不同间隔(jsPsych)

我正在尝试修改jsPsych库中的脚本以进行语言和心理学实验,这是一个代码,它显示了行中的图像并且用户可以回答。

您可以设置图像可见多长时间的时间,但只能在组中(=每张图像的时间相同),但我需要显示最后一张和最后一张图像之前的不同时间。任何人都可以帮助我如何实现这一目标?

我不知道这是否足以帮助我,但如果没有,请问我,我会尽力做到最好。提前非常感谢!

0 投票
1 回答
469 浏览

javascript - jsPsych 中的固定交叉

我正在尝试在 jsPsych 的实验中添加一个固定交叉。我对js很陌生。

这是我所拥有的:

我现在想要的是在测试块的每次试验之前添加一个固定十字。在当前形式中,它在所有刺激之后仅显示一次。任何帮助表示赞赏。

0 投票
0 回答
458 浏览

jquery - 将 jsPsych 添加到 Qualtrics

有没有人有将 jsPsych 脚本添加到 Qualtrics 的经验?

我添加了我的脚本,将所有 jsPsych 文件上传到库并添加了自定义 CSS。但是,Qualtrics 不显示任何内容。

所有帮助将不胜感激!

这是我添加到 CSS 中的:

这是我的代码:

0 投票
1 回答
306 浏览

javascript - 根据用户输入动态添加试验到实验?

我目前正在使用 JsPsych 创建一个行为实验,尤其是矩阵推理,因此用户可以根据逻辑模式从一组选项中进行选择。

我的问题是,如果用户在练习块后回答前两个试验时失败,我需要重复某些试验。假设前两个试验是为了练习目的,然后应用重复规则。

由于 JsPsych 的“时间线”是一个数组,它的元素(又名试验)是在整个实验开始时创建的,所以看起来我不能在实验开始后插入一个新的试验。

有没有办法根据用户输入强制执行某些试验?换句话说,如果用户选择了正确的选项,则进入下一个试验,如果他/她选择了错误的选项,则返回到某个先前的试验。

到目前为止我已经尝试过:

(基于 JsPsych 文档和来自 JsPsych Google Group 的帖子)

A) 使用 call-function 插件创建一个 var 并创建一个布尔标志,如果答案正确则为 True,否则为错误。然后,如果标志为假(即。experiment.push(another_trial)),我会推动另一次试验。例子:

如前所述,由于时间线的生成方式,该解决方案完全失败。

B) 使用嵌套的时间线。这更像是一种蛮力方法,其中主时间线包含第一个问题,加上一个标志,所以如果标志获得特定值,我会推送一个特定的时间线。这个真的错了,所以我不会用毫无意义的代码来打扰你。

C) 使用条件时间线。几乎是另一种蛮力方法,但取得了更多成功。我已经使用此功能来显示不同的反馈屏幕,分​​别显示正确和错误的答案。例子:

这适用于简短的线性结构,因为在这种情况下,我只需要决定要显示哪个屏幕,但是如果需要,当尝试返回上一个试验时,此解决方案会失败。从这个解决方案中,我可以定义一组非常长的二进制条件来“模拟”用户失败时的重复试验。但这不能动态生成,所以基本上我不得不猜测用户有多少次无法正确回答,当实验要与 200 多名志愿者一起运行时,这不是一个选项。另外,如果将重复条件应用于超过 2 次试验,这种蛮力策略将增加复杂性,这实际上可能在未来发生。

我猜想对 JsPsych 的核心 javascript 文件进行深度修改可能会带来解决方案,但这超出了我目前的 javascript 技能和知识。

对此主题的帮助将不胜感激。

测试此代码的一些额外说明:

下面提供了实验代码的简短工作版本。由于这次忽略了 CSS,可能会出现美学问题。此代码要求您将 jspsych 文件夹与主 HTML 文件放在同一目录中。

0 投票
1 回答
577 浏览

javascript - 为什么自动对焦属性仅在第一次试用时有效?

我需要为显示一个简单数学问题的 JsPsych 实验编写一些试验代码。用户必须尽快在文本框中回答,然后按 Enter 键移动到下一个问题。等等。

在每个问题上,都会显示一个文本区域供用户输入他/她的答案,并且这样的文本区域必须立即获得焦点。

我修改了调查文本插件以通过按 Enter 继续试验,并在创建每个文本框时添加自动对焦属性。问题是自动对焦仅适用于第一次试用,其余部分停止工作。

下面提供了代码(为了工作,JsPsych 文件夹必须在同一个目录中):

从 JsPsych 的调查文本插件方面来看,重要的变化是:

(是的,我知道内联 javascript 是个坏主意,但到目前为止,这是我设法使它工作的唯一方法)

我试过的东西:

  • 许多类似的问题建议使用getElementById() 方法,或者getElementsByTagName()为了处理 DOM 元素,但由于某种原因,它们都不起作用。
  • 我也尝试过使用计时器来聚焦文本区域,如此处所建议(关于该主题的其他解决方案也不起作用)。
  • 正如您从我的代码中看到的那样,我正在尝试使用一个触发 Blur 的函数来“恢复”焦点。我也尝试过这种方法 onLoad(),在这两种情况下都没有结果。
  • 我尝试在单个试验中的嵌套时间线上显示问题,而不是使用多次试验。也没有运气。

我错过了什么吗?

一些额外的说明:

正如您可以从这个问题的标签中猜到的那样,完全允许 ​​JQuery 和 HTML5 特定功能作为解决方案,以防无法单独使用自动对焦。不用限制自己,玩得开心。

此行为已在适用于 Ubuntu 16 的最新版 Firefox 以及适用于 Windows 的最新版 Chrome(特别是 Windows 10)上进行了测试。

更新:您可以在此处尝试此代码

0 投票
1 回答
93 浏览

javascript - 使用嵌套的 .each() 函数存储数据会导致复制值

我已经从 JsPsych 修改了一个调查多选插件,以便以复选框而不是单选按钮的形式获得响应,因为我需要向用户呈现图像,然后是 4 个备选方案,如下所示:

在此处输入图像描述

其中 A、B、C 和 D 也是图像,每个图像下方都有各自的复选框。此结构必须多次呈现,如下所示:

在此处输入图像描述

所以在这个例子中,预期的输出是:

但相反,我得到了为其余问题复制的第一个答案:

我的代码提供如下:

我已经尝试通过在控制台上打印它们来跟踪每一步生成的值,所以我猜问题是我如何实现这些嵌套循环,因此是这个问题的名称。

我在实现这个循环时尝试了不同的方法,但没有更好的结果:

可以在此处找到我的完整代码的工作示例,供您对其进行测试(查找jspsych-survey-multi-choicemrbeta.js文件,从第 141 行开始)。CSS 不包括在内,因此看起来会略有不同。

请注意,此代码的输出是一个 CSV 文件,并且在单个单元格上给出了完整的响应集,因为所有这些问题都属于同一个 JsPsych“试验”。

谢谢你的帮助。

0 投票
0 回答
369 浏览

annotations - PsiTurk/jspsych 和 Pybossa 之间的区别。

我与Psiturkjspsych和 Pybossa 合作了一段时间。在完成每一项工作后,我体验到 Pybossa 正在做与 Psiturk 相同的工作,除了 Psiturk(具有使用 jspsych 设计的 GUI 界面)可用于直接与 Amazon Mechanical Turk 集成。

我是所有这些开源平台的新手,并希望对微任务进行评估。每个人都在做的是存储数据,提供平台来管理用户,处理工作流程;我需要评估这些实验的结果,以计算我们所说的 Cohen 的 Kappa 和 Fleiss 的 Kappa 系数。如何才能做到这一点?

0 投票
1 回答
71 浏览

javascript - JsPsych 这些是什么类型的单元测试?Javascript

我正在开发一个现有项目,但我是 Javascript 新手。该项目可以在这里找到,它是 JsPsych,我在这里搜索了文档,但找不到答案(http://docs.jspsych.org/

我不明白他们是如何进行单元测试的。我找到了“测试”文件夹,你可以在下面查看它,这里。

JsPsych 测试文件夹

这是一个名为“load.test.js”的示例

有人认识这种类型的单元测试吗?这应该与某些软件配对吗?有人可以解释我将如何实际运行它吗?

0 投票
1 回答
160 浏览

javascript - 使用 PHP 保存文件名未知的文件

我正在做一个在线实验(使用 jsPsych 库),参与者(每个人都有一个由脚本随机分配的代码)将记录一些 .wav 文件。然后,我想将包含参与者代码和与该记录关联的项目编号的名称上传到服务器。每个参与者将创建类似 36 个不同的短 .wav 文件。

看起来 recorderjs 和recordermp3.js是我在浏览器端录制音频所需的(请参阅RecorderJS 通过 AJAX 上传录制的 blob),但我很难找到创建 PHP 脚本所需的信息来保存文件名未知的文件

这是相关的javascript:

这是我迄今为止对 PHP 所做的:

我的问题与将Chrome 中录制的 WAV 文件保存到服务器HTML5 和 getUserMedia - 录制音频并在特定时间后保存到 Web 服务器非常相似, 但不同之处在于我不知道上传文件的文件名是什么,我想要使用 PHP(主要是因为有人告诉我)。我可以在 php 脚本中使用什么来代替“fileToUpload”来让该脚本适用于发送给它的任何 .wav 文件?

如果您还没有猜到,我在上个月左右学习了有关 javascript 和 PHP 的所有知识,所以请对 n00b 保持温和。我查看了各种 PHP 教程和文档,但似乎并没有找到我想要的东西。代码将不胜感激。

0 投票
2 回答
1661 浏览

javascript - 如何在 XAMPP 服务器上运行 javascript 程序并将该程序的数据保存在服务器上?

我使用名为 JSPsych 的心理学实验工具编写了一个 Javascript 程序。我需要在服务器上运行该程序,并将实验试验产生的数据保存到服务器本身。

我下载了 XAMPP 并通过 XAMPP 成功运行了该程序,但我不知道如何保存数据。

任何人都可以帮忙吗?