Вывод ответов в текстовое поле
Есть такой 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, время: 03:35. |