Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите исправить ошибку в коде (https://javascript.ru/forum/misc/6727-pomogite-ispravit-oshibku-v-kode.html)

JsLoveR 18.12.2009 04:12

Помогите исправить ошибку в коде
 
<script type="text/javascript">

var MassQues=[" Кто создал Os Windows Xp ?"," Что такое википедия ?"," Кто такой Ктулху ?"," Столица Венгрии ?"," Какое из перечисленных морей самое солённое?"]
var massAns=[
{
    ans: ["a) Билл Гейтс ",
	 "b) Петрович, после литра, машину времени создал из бутылок",
	 "c) Мой мозг",
	 "d) Я шо знаю ?"
	],
	CorrecT:0
},
{
    ans: ["a) Справочник по городским телефонам ",
	 "b) Видео пособие по ловле мух",
	 "c) Веб-инцеклопедия",
	 "d) Заметки Петровича на счёт размножения колорадских жуков"
	],
	CorrecT:2
},
{
    ans: ["a) Речной леший ",
	 "b) Донное морское чудище",
	 "c) Петрович с бодуна",
	 "d) Морской коралловый краб"
	],
	CorrecT:1
},
{
    ans: ["a) Стамбул ",
	 "b) Будапешт",
	 "c) Копенгаген",
	 "d) Прага"
	],
	CorrecT:1
},
{
    ans: ["a) Чёрное море ",
	 "b) Жёлтое море",
	 "c) Красное море",
	 "d) Мраморное море"
	],
	CorrecT:2
}
];
var need=[];
var k=0;
var r=[];
var mass=[];
var somth="a";
var helper=[];
var score=0;
var money=0;
var yourAns=new Array();
//var vaRiant=new Array("a1","a3","a2","a2","a3");
function Engine(question, answer) {yourAns[question]=answer;}

function Braine(){
for(var i=0;i<1;i++){
r.push(MassQues.splice(Math.random()*MassQues.length,1))
mass=r;
//alert(mass);
if(mass==" Кто создал Os Windows Xp ?"){

massAns[0].ans;
 document.getElementById('first').innerHTML=massAns[0].ans[0];
  document.getElementById('first2').innerHTML=massAns[0].ans[1];
   document.getElementById('first3').innerHTML=massAns[0].ans[2];
    document.getElementById('first4').innerHTML=massAns[0].ans[3];
	need=" Кто создал Os Windows Xp ?";
}
if(mass==" Что такое википедия ?"){

massAns[1].ans;
 document.getElementById('first').innerHTML=massAns[1].ans[0];
  document.getElementById('first2').innerHTML=massAns[1].ans[1];
   document.getElementById('first3').innerHTML=massAns[1].ans[2];
    document.getElementById('first4').innerHTML=massAns[1].ans[3];
	need=" Что такое википедия ?";
}
if(mass==" Кто такой Ктулху ?"){

massAns[2].ans;
 document.getElementById('first').innerHTML=massAns[2].ans[0];
  document.getElementById('first2').innerHTML=massAns[2].ans[1];
   document.getElementById('first3').innerHTML=massAns[2].ans[2];
    document.getElementById('first4').innerHTML=massAns[2].ans[3];
	need=" Кто такой Ктулху ?";
}
if(mass==" Столица Венгрии ?"){

massAns[3].ans;
 document.getElementById('first').innerHTML=massAns[3].ans[0];
  document.getElementById('first2').innerHTML=massAns[3].ans[1];
   document.getElementById('first3').innerHTML=massAns[3].ans[2];
    document.getElementById('first4').innerHTML=massAns[3].ans[3];
	need=" Столица Венгрии ?";
}
if(mass==" Какое из перечисленных морей самое солённое?"){

massAns[4].ans;
 document.getElementById('first').innerHTML=massAns[4].ans[0];
  document.getElementById('first2').innerHTML=massAns[4].ans[1];
   document.getElementById('first3').innerHTML=massAns[4].ans[2];
    document.getElementById('first4').innerHTML=massAns[4].ans[3];
	need=" Какое из перечисленных морей самое солённое?";
}
else if(mass!=need){  document.getElementById('first').innerHTML="";
  document.getElementById('first2').innerHTML="";
   document.getElementById('first3').innerHTML="";
    document.getElementById('first4').innerHTML="";
 //need=[];
 }
mass=r.shift(MassQues.length-1);

if(yourAns[i]!=massAns[i].CorrecT){
score;
//alert(yourAns);
}
else {

score++;}

}

 document.getElementById('questions').innerHTML=mass;
}
</script>


---Код HTML---

<div  style="margin-top:5px; color:#0099FF;">Вопросы:
<div id="questions"></div>
</div>
<script type="text/javascript">

for(var q=0;q<4;q++){ var g=0;
g++;

}
</script>
<form name="fir" style="float:left;">
<input name="q"+'g' type="radio" value="' + i +	'" onClick="Engine(' + q + ', this.value)" style="float:left;"/><div  id="first"   style="float:left;color:#333333;"></div>
<br/>
<input name="q"+'g' type="radio" value="' + i + '" onClick="Engine(' + q + ', this.value)"  style="float:left;"/><div  id="first2"   style="float:left;color:#333333;"></div>
<br/>
<input name="q"+'g' type="radio" value="' + i + '" onClick="Engine(' + q + ', this.value)" style="float:left;"/><div  id="first3"   style="float:left;color:#333333;"></div>
<br/>
<input name="q"+'g' type="radio" value="' + i +	'" onClick="Engine(' + q + ', this.value)" style="float:left;"/><div  id="first4"   style="float:left;color:#333333;"></div>
<br/>
<br/>
<input type="button" name="nexT" onclick="Braine()"  value="Следующий"/>
</form>


Есть массив MassQues, состоящий из одних вопросов и массив massAns, состоящий из вариантов ответов и индекса правильного варинта, каждому вопросу соответствует свой вариант ответа.
Вопросы и ответы выводятся в документе через document.getElementById('').innerHTML, каждый выводимый вариант ответа имеет свой radio, где при клике срабатывает функция Engine(), в которую передаётся индекс массива и value radio и сохраняется в массиве yourAns, затем yourAns сравнивается с massAns.CorrecT индексом и value, если они не равны, то ответ не верен, иначе +1.
Так, а проблема вот в чём: дело в том, что индекс массива и value radio не передаётся, ибо у меня не правильное значение value стоит в radio, кстати, возможно причина ещё в чём-то, и, наверное много лишнего написано, но всё же наведите на истину или предложите как можно сделать иначе, я хочу, просто, чтобы у меня весь выводился только лишь в 4 тегах <input/>.
Нету опыта в Javascript.
Надеюсь на ваш мозг:p

PeaceCoder 18.12.2009 14:40

var massQ=[
  {
    Q: " Кто создал Os Windows Xp ?", 
    ans: ["a) Билл Гейтс ",
     "b) Петрович, после литра, машину времени создал из бутылок",
     "c) Мой мозг",
     "d) Я шо знаю ?"
    ],
    CorrecT:0
  },
  {
    Q: " Что такое википедия ?",
    ans: ["a) Справочник по городским телефонам ",
     "b) Видео пособие по ловле мух",
     "c) Веб-инцеклопедия",
     "d) Заметки Петровича на счёт размножения колорадских жуков"
    ],
    CorrecT:2
  },
  {
    Q: " Кто такой Ктулху ?",
    ans: ["a) Речной леший ",
     "b) Донное морское чудище",
     "c) Петрович с бодуна",
     "d) Морской коралловый краб"
    ],
    CorrecT:1
  },
  {
    Q: " Столица Венгрии ?",
    ans: ["a) Стамбул ",
     "b) Будапешт",
     "c) Копенгаген",
     "d) Прага"
    ],
    CorrecT:1
  },
  {
    Q:" Какое из перечисленных морей самое солённое?",
    ans: ["a) Чёрное море ",
     "b) Жёлтое море",
     "c) Красное море",
     "d) Мраморное море"
    ],
    CorrecT:2
  }
];
var i,j,yourAns=[],r=[];

while (massQ.length) r.push(MassQ.splice(Math.random()*MassQ.length,1));
massQ = r;


for (i=0,i<massQ.length,i++){
  document.write(massQ[i].Q+'<br>');
  for (j=0;j<massQ[i].ans.length;j++){
    document.write('<INPUT type="radio" onclick="yourAns['+i+']='+(j==massQ[i].correcT ? 1:0)+';"> '+massQ[i].ans[j]+'<br>')
    }
  }

function score(){
  j=0;
  for (i=0;i<yourAns.length;i++) j+=yourAns[i];
  alert("Ваш рейтинг: "+j+' баллов');
  }
document.write('<input type="button" value="Результат" onclick="score();"')


Писал на скорую руку.....

JsLoveR 18.12.2009 21:09

Спасибо, PeaceCoder, помогли, подкорректил ваш код под мои нужды.


Часовой пояс GMT +3, время: 17:02.