event.currentTarget.value 返回未定义的 javascript

n21*_*212 4 javascript

我正在尝试制作一个简单的应用程序,其中有 1 个全局事件侦听器侦听单击事件。

目前,每当我单击按钮时,即使其中有文本,它也会返回未定义(按钮开始时没有文本,但随后会被填充)。

您如何才能获得按钮的值?


let currentQuestion = -1;


let questions = [
{
  question: "Question 1",
  options: {
    option1: "1",
    option2: "2",
    option3: "3"
  },
  correct: "1"
},
{
  question:"Question 2",
  options: {
    option1: "4",
    option2: "5",
    option3: "6"
  },
  correct: "5"
}
];

document.addEventListener("click", (event)=> {

  console.log(event.currentTarget.value);
  
  currentQuestion++;
  console.log(currentQuestion);

  document.querySelector("#opt1").innerHTML = questions[currentQuestion].options.option1;
  document.querySelector("#opt2").innerHTML = questions[currentQuestion].options.option2;document.querySelector("#opt3").innerHTML = questions[currentQuestion].options.option3;
  
});


Run Code Online (Sandbox Code Playgroud)

      <button id="opt1"></button>
      <button id="opt2"></button>
      <button id="opt3"></button>
      <button id="next">Next</button>
Run Code Online (Sandbox Code Playgroud)

小智 9

根据mozilla文档:https://developer.mozilla.org/en-US/docs/Web/API/Event/currentTarget

当事件遍历 DOM 时,Event 接口的 currentTarget 只读属性标识事件的当前目标。它始终引用事件处理程序已附加到的元素,而不是 Event.target,后者标识发生事件的元素并且可能是其后代。

您的事件处理程序附加到文档...它没有值。

尝试切换到 event.target

console.log(event.target.value);
Run Code Online (Sandbox Code Playgroud)

即使如此..按钮也没有价值...所以你需要查看它们的innerText

console.log(event.target.innerText);
Run Code Online (Sandbox Code Playgroud)