javascript - 如何更改按钮onclick jQuery的当前背景颜色
问题描述
我使用测验,我想改变按钮的颜色,所以当我点击按钮时,我想改变他的背景颜色,我有一个 div,其中我有 dynamycaly 创建的按钮,对于这个按钮,我想改变颜色。
JS:
var quiz = [
{ stepName: "Check Oil", frequency: "1 / Shift", stepDescription: "Verify the presence of spilled oil", image: "https://cdn.iconscout.com/icon/free/png-512/schedule-maintenance-1575170-1331504.png", choices: ["OK", "NOK", "N/A"], savedAnswer: "" },
{ stepName: "Check noise", frequency: "1 / Shift", stepDescription: "Check for unusual noise from machine", image: "", choices: ["OK", "NOK", "N/A"], savedAnswer: "" },
{ stepName: "Clean filter", frequency: "1 / Week (Monday)", stepDescription: "Clean the air filter at compressed air inlet", image: "https://cdn.iconscout.com/icon/free/png-512/schedule-maintenance-1575170-1331504.png", choices: ["OK", "NOK", "N/A"], savedAnswer: "" },
{ stepName: "Check Andon", frequency: "1 / Shift", stepDescription: "Check if andon light is on", image: "https://cdn.iconscout.com/icon/free/png-512/schedule-maintenance-1575170-1331504.png", choices: ["OK", "NOK", "N/A"], savedAnswer: "" },
{ stepName: "Safety barrier", frequency: "1 / Shift", stepDescription: "Check the proper functionality of light barrier(s)", image: "https://cdn.iconscout.com/icon/free/png-512/schedule-maintenance-1575170-1331504.png", choices: ["OK", "NOK"], savedAnswer: "" }
];
var index = 0;
function parseQuiz() {
for (var i = 0; quiz.length > i; i++) {
creatingAnswers(quiz[index].choices[i]);
setQuizToDiv(quiz[index].stepName, quiz[index].frequency, quiz[index].stepDescription, quiz[index].image);
}
}
function setQuizToDiv(stepName, frequency, stepDescription, image) {
$(".quiz-container").html('');
var quizHtml;
if (image != "") {
quizHtml = `
<div class="step-name">
${stepName}
</div>
<div class="frequency">
Frequency: ${frequency}
</div>
<div class="step-desc">
${stepDescription}
</div>
<div class="step-image">
<div id="overlay"></div>
<img class="main-img" src="${image}" />
</div>`;
} else {
quizHtml = `
<div class="step-name">
${stepName}
</div>
<div class="frequency">
Frequency: ${frequency}
</div>
<div class="step-desc">
${stepDescription}
</div>
<div class="separation-div"></div>
`;
}
$(".quiz-container").append(quizHtml);
}
function creatingAnswers(choises) {
if (choises != undefined) {
var answers = `<button class="btn next-btn">${choises}</button>`
$(".answ-container").append(answers);
}
}
parseQuiz();
$(".quiz-container").on("click", ".main-img", function () {
$('#overlay')
.css({ backgroundImage: `url(${this.src})` })
.addClass('open')
.one('click', function () { $(this).removeClass('open'); });
});
$(".answ-container").on("click", ".next-btn", function () {
let indexData = index + 1;
let arrayData = quiz.length - 1;
if (indexData <= arrayData) {
quiz[index].savedAnswer = $(this).text();
index++;
$(".answ-container").html("");
parseQuiz();
navButton();
}
});
HTML:
<div class="quiz-container"></div>
<div class="answ-container"></div>
所以我尝试在这个函数中改变 bg 颜色
$(".answ-container").on("click", ".next-btn", function () {
要添加此代码:
$(this).css("background-color","red")
但这对我不起作用。因此,在单击时,我想更改按钮的 bg,并且当我转到我着色的下一个问题 previus 按钮时,将被保存。
解决方案
好的,我想我明白你想要什么。这是一个线索,以便您可以进步。我不会编辑你的jsfiddle,因为你的代码非常混乱......
您可以在 JS 中添加的内容:
$(".answ-container").on("click", ".next-btn", function () {
// adding the class to the clicked button
$(this).addClass('clicked')
// removing the class of the siblings
$(this).siblings().removeClass('clicked')
// saving the index of the answer clicked
quiz[index].savedAnswer = $(this).index()
您可以在 CSS 中添加的内容:
.clicked {
background-color: green;
}
当您创建答案按钮时,您会为按钮添加“单击”类并保存索引。
原则是与类一起玩。
推荐阅读
- javascript - How to show image from api call in Angular?
- java - Java 使一个方法返回一个 int 或一个字符串,并且需要一个 String 和一个 String 或一个 int 和一个 String
- c - 从指针到指针的不兼容类型错误
- itext - 根本不支持 itext7.pdfhtml 中的 css 属性
- python - 如果 dict(a=1) 被接受,那么为什么不接受 dict(1=1)?
- django - 为什么使用 axios 将带有数据的图像发布到 django-rest-framework 会出现 404 错误?
- javascript - 如何仅在移动浏览器而非桌面浏览器中显示下拉菜单链接
- python - AttributeError:通过 Python 发送 Excel 附件时,“列表”没有属性“编码”
- react-native - 重定向失败:react-native-svg:React.createElement:类型无效
- regex - awk 在特定 str 匹配和标题之后对分组行中的值求和