我需要这个功能的参数吗?

时间:2016-12-09 22:17:35

标签: javascript

enter image description herethis homework assignment中,我遇到了这部分问题的问题。

window.onload=setup;

function setup()
{
   var questions = document.querySelectorAll('ol  li');
   for (var i= 0; i < questions.length ; i++)
   {
      questions[i].id = i + "phrases";
      questions[i].onmousedown = showEnglish;
      //questions[i].onmouseup = showFrench;
      questions[i].style.cursor = "pointer";
   }
}
function showEnglish()
{
   var phraseNumber = parseInt(question[i].id)
   document.getElementById(phraseNumber).innerHTML = english[phraseNumber];
   english[phraseNumber].style.font = "italic";
   english[phraseNumber].style.Color = "rgb(191,22,31)";
}

a)使用经历mousedown事件的列表项的id属性,使用parseInt()函数提取索引号,并将该值存储在phraseNumber变量中。

我收到错误,说showenglish()中没有定义问题。 我应该引用另一个对象吗?

2 个答案:

答案 0 :(得分:0)

您需要将问题作为参数传递:

for(i=0;i<question.length;i++){
let a=i;//important for scoping
question[a].onmousedown=function(){
   showEnglish(question[a]);
}
}

function showEnglish(question){
document.getElementById(question.id).style.font="italic";
...
}

(注意:这个答案包含ES6。不要在真实的生产环境中使用它。让a = i;定义a保持在侦听器内使用,而我将始终是question.length,因为在循环发生后可能会点击事件...)

或者,事件侦听器将 this 绑定为单击的元素:

question[i].addEventListener("click",showEnglish,false);

function showEnglish(){
document.getElementById(this.id).style.font="italic";
... 
}

答案 1 :(得分:0)

当用户按下鼠标按钮时,会引发echo "$RANDOM % 10 + 1 | bc"事件。查看documentation for the mousedown event

您的事件处理函数将传递一个Event对象,该对象具有mousedown属性,该属性是对鼠标单击的元素的引用。 您可以使用target在事件处理函数中访问它。

event.target