我正在学习javascript,并且正在尝试使用javascript_source中提供的示例在javascript中使用radiobuttons进行测验。我现在正处于这样一种情况,即我希望所选的radiobuttons标签颜色为根据所选答案更改为红色或绿色。
我把我的代码放在jsfiddle中,我能够让它在ny浏览器中工作,但我不知道为什么它似乎不适用于jsfiddle,基本思路是一样的,只有我会喜欢根据正确或错误更改所选单选按钮标签的颜色。
对此有任何帮助都会感激不尽
* *编辑* 现在jsfiddle的工作得益于以下评论
答案 0 :(得分:3)
修正了它,http://jsfiddle.net/aEeKt/8/。我所做的只是添加以获取父<li>
并根据答案添加.correct
或.incorrect
类。
<强> HTML 强>
<h3>Web Design Quiz</h3>
<form name="quiz">
1. What does CSS stand for?
<ul style="margin-top: 1pt">
<li><input type="radio" name="q1" value="Colorful Style Symbols">Colorful Style Symbols</li>
<li><input type="radio" name="q1" value="Cascading Style Sheets">Cascading Style Sheets</li>
<li><input type="radio" name="q1" value="Computer Style Symbols">Computer Style Symbols</li>
</ul>
2. What does DHTML stand for?
<ul style="margin-top: 1pt">
<li><input type="radio" name="q2" value="Dramatic HTML">Dramatic HTML</li>
<li><input type="radio" name="q2" value="Design HTML">Design HTML</li>
<li><input type="radio" name="q2" value="Dynamic HTML">Dynamic HTML</li>
</ul>
3. Who created Javascript?
<ul style="margin-top: 1pt">
<li><input type="radio" name="q3" value="Microsoft">Microsoft</li>
<li><input type="radio" name="q3" value="Netscape">Netscape</li>
<li><input type="radio" name="q3" value="Sun Micro Systems">Sun Micro Systems</li>
</ul>
4. What does CGI stand for?
<ul style="margin-top: 1pt">
<li><input type="radio" name="q4" value="Cascading Gate Interaction">Cascading Gate Interaction</li>
<li><input type="radio" name="q4" value="Common GIF Interface">Common GIF Interface</li>
<li><input type="radio" name="q4" value="Common Gateway Interface">Common Gateway Interface</li>
</ul>
<input type="button" value="Get score" onClick="getScore(this.form)">
<input type="reset" value="Clear answers">
<p> Score = <strong><input class="bgclr" type="text" size="5" name="percentage" disabled></strong><br><br>
Correct answers:<br>
<textarea class="bgclr" name="solutions" wrap="virtual" rows="4" cols="30" disabled>
</textarea>
</form>
Javascript
// Insert number of questions
var numQues = 4;
// Insert number of choices in each question
var numChoi = 3;
// Insert number of questions displayed in answer area
var answers = new Array(4);
// Insert answers to questions
answers[0] = "Cascading Style Sheets";
answers[1] = "Dynamic HTML";
answers[2] = "Netscape";
answers[3] = "Common Gateway Interface";
// Do not change anything below here ...
function getScore(form) {
var score = 0;
var currElt;
var currSelection;
for (i = 0; i < numQues; i++) {
currElt = i * numChoi;
for (j = 0; j < numChoi; j++) {
currSelection = form.elements[currElt + j];
cParent = currSelection.parentNode;
if (currSelection.checked) {
if (currSelection.value == answers[i]) {
score++;
cParent.className = 'correct';
break;
}else{
cParent.className = 'incorrect';
}
}
}
}
score = Math.round(score / numQues * 100);
form.percentage.value = score + "%";
var correctAnswers = "";
for (i = 1; i <= numQues; i++) {
correctAnswers += i + ". " + answers[i - 1] + "\r\n";
}
form.solutions.value = correctAnswers;
}
<强> CSS 强>
li.correct{
color: green;
}
li.incorrect{
color: red;
}
答案 1 :(得分:0)
在jsfiddle中,左侧有一列有各种设置。在“选择框架”下,有一个默认为“onLoad”的下拉框。这允许您选择在页面中包含和执行javascript的方式。
当您选择'onLoad'时,声明的任何函数或变量都不是全局的。但是,使用onClick="getScore(this.form)"
要求函数是全局的。相反,你应该选择'无包裹(头)'或'无包裹(身体)'。
TL;博士
从左侧的下拉框中选择“no wrap(head)”,以便您的示例在jsfiddle中工作。