Как вывести правильный ответ
Немогу понять как выводить правильный ответ.Ну обьясню в 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, время: 15:49. |