我正在制作一个小脚本,当在Vocabulary.com上的控制台中运行时,选择一个答案(第三个或第四个)并单击。然后,代码检查答案是错误的还是正确的,然后进入下一个问题。由于从回答问题到出现“下一个问题”按钮之间的动画非常长,所以我不得不使用函数和setTimeout()的奇怪组合。虽然代码可以工作,但我觉得它很混乱,而且可能不会总是起作用。如何使这段代码更好地执行,并确保它易于编辑?
要运行脚本,请继续使用https://www.vocabulary.com并在控制台中运行以下代码。
function clickNextButton() {
for (v = 0; v < 4; v++) {
document.getElementById("questionContainer").getElementsByTagName("a")[v].click();
}
function finalClick() {
var foo = document.getElementById("blurbPane").getElementsByTagName("button")[0];
foo.click();
}
setTimeout(finalClick, 1000);
}
var myElem = document.getElementsByClassName('source')[0];
if (myElem == null){
console.log("no source")
} else{
myElem.parentNode.removeChild(myElem);
}
var mathRandom = Math.floor(Math.random() * 2 + 2);
var selectChoices = document.getElementById("questionContainer").getElementsByClassName("choices")[0].getElementsByTagName("a")[mathRandom];
selectChoices.click();
setTimeout(partA, 1000);
function partA() {
var ifMessage = document.getElementsByClassName("messagePane")[0].getElementsByTagName("h3")[0];
var myColor = window.getComputedStyle(ifMessage).getPropertyValue("color");
if (myColor == "rgb(204, 0, 0)") {
clickNextButton();
} else if (myColor == "rgb(83, 144, 7)") {
document.getElementsByClassName("nextQuestion")[0].click();
}
}发布于 2016-03-05 16:27:12
您可以使用JQuery 停止播放跳过元素中的动画。此方法将应用于Jquery选择器,并将停止在其上运行的动画。
因此,使用它,您可以在触发单击后强制完成与问题容器相关的所有动画。
https://codereview.stackexchange.com/questions/121616
复制相似问题