Как вывести правильный ответ
Немогу понять как выводить правильный ответ.Ну обьясню в xml файле ответов только 2 Да или Нет и они как-бы лежат отдельно от
answer вот сам xml документ <?xml version="1.0" encoding="windows-1251"?> <?xml-stylesheet href="style.css" type="text/html" ?> <!DOCTYPE test SYSTEM "test.xml"> <test> <style border="5px solid black" hight="350px" width="350px" padding="20px" margin="0px" position="relative" ></style> <buttonstyle hight="40px" width="50px" position="fixed" marginleft="150px" ></buttonstyle> <attemptsanswer>1</attemptsanswer> <questions> <question>Вопрос</question> <answer rating="1"> </answer> <answer rating="0"> </answer> <question1>Вопрос1</question1> <answer rating="0"> </answer> <answer rating="1"> </answer> <textanswer>Да</textanswer> <textanswer1>Нет</textanswer1> </questions> <TextButton>Ответить на вопрос</TextButton> <TextButton1>Стереть ответы</TextButton1> <TextButton2>начать тест заново</TextButton2> <TextButton3>Получить правильный ответ</TextButton3> <ResultTextTrue>Ваш ответ верен!</ResultTextTrue> <ResultTextFalse>Ваш ответ не верен!</ResultTextFalse> </test> и пишу такой код
var pressed=0;
var pressed1=0;
function TrueAnswer(){
var inputs1 = document.getElementsByTagName('input');
//пробегаю про всем инпутам
for(var k = 0; k < inputs1.length ; k++){
//и ищю где rating=1 ну тоесть какой из всех ответов правильный
if(answer[k] == 1){
error=true;
break;
}
}
//использовал просто для проверки правильности функции
// output.value=error ? ''+textanswer+'' : ''+textanswer1+'';
}
function checkAnswer() {
var error = false;
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length ; i++){
var checked = inputs[i].checked;
var right = answer[i] == 1;
if (checked !== right){
error=true;
break;
}
}
if(pressed<attemptsanswer)
{
i = ++pressed;
}
else
{
alert("Вы исчерпали количество попыток")
pressed=0;
var button = document.getElementById("button");
button.style.display='none';
var button1 = document.getElementById("id2");
button1.style.display='none';
var button2 = document.getElementById("id1");
button2.style.display='';
button2.onclick = function(event){
button.style.display='';
button1.style.display='';
button2.style.display='none';
output.value='Пройдите тест ище раз'
g=++pressed1;
alert(pressed1);
if(pressed1>attemptsanswer)
{
button.style.display='none';
button1.style.display='none';
button2.style.display='none';
var button3 = document.getElementById("id3");
button3.style.display='';
}
}
}
output.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+'';
return false;
}
</script>
</head>
<body>
<form onsubmit="return checkAnswer()">
<tr>
<td>
<div id="id">
<div class='cont2' style="margin-left:156px"></div>
<hr>
<div class='cont1' ></div>
<div align="center" class='cont' ></div>
<hr>
<div class="bond1"></div>
<div align="center" class='bond'></div>
<hr>
</div>
</td>
<td>
<p style="position:relative"><button id="button" type="submit" ><div class='onki'></div></button> <button id="id2" type="reset"><div class='lolki'></div></button><button id="id1" type="reset"><div class='lolki1'></div></button><button id="id3" type="button" onclick="TrueAnswer()" ><div class='lolki2'></div></button></p>
<p style=" position:relative"><textarea id="output" readonly></textarea></p>
</td>
</tr>
</form>
</body>
</html>
Так вопрос стоит в том как мне вывести в тестовое поле с id="output" именно правильные ответы(ну у меня сверху странички есть Да и Нет.Да отвечает за первые радиобаттоны в каждой групе,Нет за вторые).Как мне их связать и выводить правильные ответы на каждый вопрос? |
Ну либо же пусть Да и Нет хранятса в <answer></answer> я просто не буду выводить их,но непойму как правильно в текстовое поле выводить правильные ответы.
|
Подскажите плиз как правильно зделать?
|
function TrueAnswer(){
var inputs1 = document.getElementsByTagName('input');
for(var k = 0; k < inputs1.length ; k++){
if(answer[k] == 1){
error=true;
break;
}
}
var n=document.getElementById('output');
n.value='бла бла бла';
}
Как правильно реализовать что бы выводило только правильные ответы? |
Vasy,
А где у вас в документе тэги "input"? |
Вообще наверное понятно что они в <body></body>.Где ище быть input?что за глупый вопрос вообще?
ок вышлю полный код
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
<script type="text/javascript" src="jquery.js"></script>
<script src="script.js" type="text/javascript"></script>
<script type="text/javascript">
var answer={}
$(document).ready(function(){
$.ajax({
type: "GET",
url: "test.xml",
dataType: "xml",
success: vasa
});
var button2 = document.getElementById("id1");
button2.style.display='none';
var button3 = document.getElementById("id3");
button3.style.display='none';
function vasa(xml) {
attemptsanswer=$(xml).find('attemptsanswer').text();
attemptext=$(xml).find('attemptext').text();
attemptext1=$(xml).find('attemptext1').text();
textanswer=$(xml).find('textanswer ').text();
$('.cont2').append(''+textanswer+'');
textanswer1=$(xml).find('textanswer1').text();
$('.cont2').append(''+textanswer1+'');
question=$(xml).find('question').text();
$('.cont1').append('<p><label><h4>'+question+'</h4></label></p>');
question1=$(xml).find('question1').text();
$('.bond1').append('<p><label><h4>'+question1+'</h4></label></p>');
TextButton=$(xml).find('TextButton').text();
$('.onki').append('<p><label><h4>'+TextButton+'</h4></label></p>');
TextButton1=$(xml).find('TextButton1').text();
$('.lolki').append('<p><label><h4>'+TextButton1+'</h4></label></p>');
TextButton2=$(xml).find('TextButton2').text();
$('.lolki1').append('<p><label><h4>'+TextButton2+'</h4></label></p>');
TextButton3=$(xml).find('TextButton3').text();
$('.lolki2').append('<p><label><h4>'+TextButton3+'</h4></label></p>');
ResultTextTrue=$(xml).find('ResultTextTrue').text();
ResultTextFalse=$(xml).find('ResultTextFalse').text();
answer1=$(xml).find('answer').text();
var answers = $(xml).find('answer');
answers.each(function(index){
var a = this.textContent;
var rating = +this.getAttribute('rating');
var inputs = document.getElementsByTagName('input');
if(inputs.length<2)
{
$('.cont').append('<input name="group1" type="radio">');
}
else
{
$('.bond').append('<input name="group2" type="radio">');
}
answer[index] = rating;
});
var div = document.getElementById('id')
//var decoration = xml.querySelector('style');
div.style.border = $(xml).find('style').attr('border');
div.style.width = $(xml).find('style').attr('width');
div.style.height = $(xml).find('style').attr('hight');
div.style.padding = $(xml).find('style').attr('padding');
div.style.margin = $(xml).find('style').attr('margin');
div.style.position = $(xml).find('style').attr('position');
// var p = document.getElementById('id1')
// var decoration = xml.querySelector('buttonstyle');
// p.style.position = decoration.getAttribute('position');
// p.style.width = decoration.getAttribute('width');
// p.style.height = decoration.getAttribute('hight');
// p.style.margin-left = decoration.getAttribute('marginleft');
// p.style.margin = decoration.getAttribute('margin');
}
});
var pressed=0;
var pressed1=0;
function TrueAnswer(){
var inputs1 = document.getElementsByTagName('input');
for(var k = 0; k < inputs1.length ; k++){
if(answer[k] == 1){
error=true;
break;
}
}
var n=document.getElementById('output');
n.value='бла бла бла';
}
function checkAnswer() {
var error = false;
var inputs = document.getElementsByTagName('input');
for(var i = 0; i < inputs.length ; i++){
var checked = inputs[i].checked;
var right = answer[i] == 1;
if (checked !== right){
error=true;
break;
}
}
if(pressed<attemptsanswer)
{
i = ++pressed;
}
else
{
pressed=0;
var button = document.getElementById("button");
button.style.display='none';
var button1 = document.getElementById("id2");
button1.style.display='none';
var button2 = document.getElementById("id1");
button2.style.display='';
button2.onclick = function(event){
button.style.display='';
button1.style.display='';
button2.style.display='none';
g=++pressed1;
if(pressed1>attemptsanswer)
{
button.style.display='none';
button1.style.display='none';
button2.style.display='none';
var button3 = document.getElementById("id3");
button3.style.display='';
alert('ваши попытки закончились.Узнайте правильный ответ');
}
}
}
var c=document.getElementById('output');
c.value=error ? ''+ResultTextFalse+'' : ''+ResultTextTrue+'';
return false;
}
</script>
</head>
<body>
<form onsubmit="return checkAnswer()">
<div id="id">
<div class='cont2' style="margin-left:156px"></div>
<hr>
<div class='cont1' ></div>
<div align="center" class='cont' ></div>
<hr>
<div class="bond1"></div>
<div align="center" class='bond'></div>
<hr>
</div>
<p style="position:relative"><button id="button" type="submit" ><div class='onki'></div></button> <button id="id2" type="reset"><div class='lolki'></div></button><button id="id1" type="reset"><div class='lolki1'></div></button><button id="id3" type="button" onclick="TrueAnswer()" ><div class='lolki2'></div></button></p>
<p style=" position:relative"><textarea id="output" readonly></textarea></p>
</form>
</body>
</html>
Просидел целый вечер,так и не написал ничерта( |
люди подскажите плиз(
|
Блин подскажите.Я как-бы понимаю что нужно проверять во всех input рейтинг и провирть какой из них правильный,это я делаю этим кодом
var inputs1 = document.getElementsByTagName('input');
for(var k = 0; k < inputs1.length ; k++){
if(answer[k] == 1){
alert(answer1);
break;
}
}
А как вывести именно те текстовые поля(правильные ответы) где рейтинг=1? |
ребят подскажи чего я немогу додумать?
|
Не стал читать все, но если я правильно понял то вот вариант решения:
<div id="question1" class="question">
Question.
<input type="radio" name="question1" value="0" />Anwer1
<input type="radio" name="question1" value="1" />Anwer1
</div>
<div id="question2" class="question">
Question.
<input type="radio" name="question2" value="0" />Anwer1
<input type="radio" name="question2" value="1" />Anwer1
</div>
function showRightAnswers() {
var answers = [0, 1],
elements = document.getElementsByClassName("question"),
rightAnswers = [];
for(var i = 0, leng = elements.length, answer; i < leng; i++) {
answer = elements[i].querySelector(":checked");
if(answer.value == answers[i]) {
rightAnswers.push(elements[i]);
}
}
console.log(rightAnswers);
for(var i = 0, leng = rightAnswers.length; i < leng; i++) {
rightAnswers[i].style.border = "1px solid black";
}
}
|
| Часовой пояс GMT +3, время: 06:55. |