二次曲线:替换鼠标单击的键盘笔划

Quadratics: Replace Keyboard stroke for Mouse clicks

本文关键字:单击 鼠标 键盘 替换 二次 曲线      更新时间:2023-09-26

我对Javascript不太了解。我希望有人能简单地解释一下编辑以下代码的过程。

this.hideNextButton();
this.hidePreviousButton();
var that = this;
Event.observe(document, 'keydown', function keydownCallback(e) {
  var choiceID = null;
  switch (e.keyCode) {
    case 74: // 'j' was pressed
      choiceID = 1;
      break;
    case 75: // 'k' was pressed
      choiceID = 2;
      break;
  }
  if (choiceID) {
    Event.stopObserving(document, 'keydown', keydownCallback);
    that.setChoiceValue(choiceID, true);
    that.clickNextButton();
  }
});

如果用户想用点击键盘上的字母来代替鼠标的点击,例如点击J来选择下一个问题,或者选择是,点击a

任何帮助或指向正确的方向都是帮助!

在您提供的代码中,按"j"或"k"通过设置选项值回答当前问题,然后转到下一页。要添加其他键盘按键,您需要使用适当的键代码为开关添加额外的大小写。例如,如果你想让"j"转到下一页,让"a"回答"是",它会是这样的(删除if(choiceID)部分):

Event.observe(document, 'keydown', function keydownCallback(e) {
  switch (e.keyCode) {
    case 65:  // 'a' was pressed
      that.setChoiceValue(1, true);
      break;
    case 74: // 'j' was pressed
      Event.stopObserving(document, 'keydown', keydownCallback);
      that.clickNextButton();
  }
});

您需要跟踪指向元素,并在按键j时调用指向元素的点击事件。

var pointedElement;
document.onmousemove = function(e) {
  pointedElement = e.srcElement;
}
document.onkeydown = function(e) {
  switch (e.keyCode) {
    case 74: // 'j' was pressed
      pointedElement.click()
      break;
  }
} 

编辑:我的答案只是想用另一个键更改整个窗口中的点击元素,但在您的情况下则不同。我不能仅仅通过查看这个片段来帮助您,但您需要使用相同的按钮功能来更改切换大小写块。这些按钮到底在干什么?您需要调用下一个和上一个键正在处理的相同功能。