Вывод ответов в текстовое поле
Есть такой 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> <item> <question>Вопрос</question> <answers> <answer rating="1">Да3123</answer> <answer rating="0">Не21312т</answer> </answers> </item> <item> <question>Вопрос1</question> <answers> <answer rating="0">Да</answer> <answer rating="1">Нет </answer> </answers> </item> <item> <question>Вопрос2</question> <answers> <answer rating="0">хай </answer> <answer rating="1">дой </answer> </answers> </item> </questions> <attemptext>Вы исчерпали количество попыток</attemptext> <attemptext1>Пройдите тест ище раз</attemptext1> <TextButton>Ответить на вопрос</TextButton> <TextButton1>Стереть ответы</TextButton1> <TextButton2>начать тест заново</TextButton2> <TextButton3>Получить правильный ответ</TextButton3> <ResultTextTrue>Ваш ответ верен!</ResultTextTrue> <ResultTextFalse>Ваш ответ не верен!</ResultTextFalse> </test> и есть код который находит в этом xml документе все и рисует на страницу. <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Test</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> var g_xml; $(document).ready(function(){ $.ajax({ type: "GET", url: "test.xml", dataType: "xml", success: vasa }); var button2 = document.getElementById("id2"); button2.style.display='none'; var button3 = document.getElementById("id3"); button3.style.display='none'; function vasa(xml) { ResultTextTrue=$(xml).find('ResultTextTrue').text(); ResultTextFalse=$(xml).find('ResultTextFalse').text(); attemptsanswer=$(xml).find('attemptsanswer').text(); g_xml=xml; html=''; item=$(xml).find('questions').children(); for(i=0; i<$(item).length; i++){ html=html+"<div class='question' value='"+i+"'>"; variant=''; element=$(item).eq(i).children(); k=0; title="<p>"+$(element)[0].textContent+"</p>"; ans=$(element).eq(1).children(); for(j=0; j<$(ans).length; j++){ variant=variant+"<input type='radio' value='"+k+"' name='question"+i+"'>"+$(ans)[j].textContent; k++; } k=0; html=html+title+variant+"</div>"; } $('#queston').html(html); var div = document.getElementById('divi'); //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 pressed=0; var pressed1=0; function checkAnswer(){ var error = false; q=$('#form').find('.question'); for(i=0; i<$(q).length; i++){ q_value=$(q).eq(i).attr('value'); value=$(q).eq(i).find('input:checked').attr('value'); rating=$(g_xml).find('questions').children().eq(q_value).children().eq(1).children().eq(value).attr('rating') ans=$(g_xml).find('questions').children().eq(q_value).children(); text=$(ans).find('[rating="1"]').text() if(rating==1){ //alert($(q).eq(i).find('p').text()+" - good ("+text+")"); output.value=ResultTextTrue; }else{ // alert($(q).eq(i).find('p').text()+" - bad ("+text+")"); output.value=ResultTextFalse; } } if(pressed<attemptsanswer) { document.getElementById('meow').innerHTML = ++pressed; // alert(pressed); } else { pressed=0; var button = document.getElementById("send"); button.style.display='none'; var button1 = document.getElementById("id1"); button1.style.display='none'; var button2 = document.getElementById("id2"); 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('ваши попытки закончились.Узнайте правильный ответ'); } } } } function TrueAnswer(){ for(i=0; i<$(q).length; i++){ //q_value=$(q).eq(i).attr('value'); //value=$(q).eq(i).find('input:checked').attr('value'); //rating=$(g_xml).find('questions').children().eq(q_value).children().eq(1).children().eq(value).attr('rating') //ans=$(g_xml).find('questions').children().eq(q_value).children(); //text=$(ans).find('[rating="1"]').text(); output.value=$(q).eq(i).find('p').text()+"("+text+")"; } } </script> </head> <body> <div id='form'> <p>На кнопочку тыкнуто: <span id="meow">0</span> раз.</p> <div id="divi"> <div id="queston"></div> </div> <button id='send' name='send' onclick='checkAnswer()' >Проверить</button> <button id="id1" type="reset">Стереть Ответы</button> <button id="id2" type="reset">Начать тест заново</button> <button id="id3" type="button" onclick="TrueAnswer()" >Показать правильный ответ</button> <p style=" position:relative"><textarea id="output" readonly></textarea></p> </div> </body> </html> так вот немогу в текстовое поле правильно вывести правильные ответы.В функции function TrueAnswer() Если делать вывод как alert($(q).eq(i).find('p').text()+"("+text+")";) То все выводит чюдесно а если вывожу в текстовое поле то выводит только первый правильный ответ.Как коректно зделать вывод в текстовое поле.Подскажите пожалуста |
Подскажите пожалуйста как коректо выводить.
|
Vasy,
Сделайте небольшой тестовый пример, тогда вам обязательно помогут. Ковыряться в этой неотформатированной простыне кода нет ни малейшего желания. |
вот небольшой тестовый пример.Учитывая тот-же xml документ
<html> <head> <meta charset="utf-8" /> <title>Test</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript"> function TrueAnswer(){ for(i=0; i<$(q).length; i++){ q_value=$(q).eq(i).attr('value'); rating=$(g_xml).find('questions').children().eq(q_value).children().eq(1).children().eq(value).attr('rating') ans=$(g_xml).find('questions').children().eq(q_value).children(); text=$(ans).find('[rating="1"]').text(); alert($(q).eq(i).find('p').text()+"("+text+")"); } } </script> </head> <body> <div id='form'> <button id="id3" type="button" onclick="TrueAnswer()" >Показать правильный ответ</button> <p style=" position:relative"><textarea id="output" readonly></textarea></p> </div> тут есть только та функция с помощью которой я хочу выводить только верные ответы в текствое поле.Все остальное что было в полном коде,по сути неважно.Идет просто добавление всего из xml документа. Так оно выводит так как я ожидаю,выводит все правильные всех ответов.Ну тоесть выводитса 3 алерта в цикле.А как выводить в текстовое поле ну с помощью output.value=($(q).eq(i).find('p').text()+"("+text+")"); |
Vasy,
output.value += ($(q).eq(i).find('p').text()+"("+text+")"); |
спасибо вам огромное,совсем уже лоханулся на самом элементарно
|
Часовой пояс GMT +3, время: 04:49. |