我正在尝试制作一个简单的应用程序,其中有 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)