функции и массивы
вообщем так: я совершенно недавно начал изучать javascript и сейчас я решил создать викторину. у меня есть вопрос, три варианта ответа и ответ, все это забито в 1 массив, тоесть a=new array('вопрос 1", "вариант ответа 1", "вариант ответа 2", "вариант ответа 3", "правельный ответ(совпадает с одним из вариантов)"', вопрос 2", "вариант ответа 1", "вариант ответа 2", "вариант ответа 3", "правельный ответ(совпадает с одним из вариантов)") итд по этому у меня есть несколько вопросов:
1.подскажите пожалуйста функцию чтобы изменить значение массива на 5 вперед 2.также интересует функция, с помощью которой сравнивать выбранный ответ с правельным и оповестить нас в алерте всем заранее спасибо!!! |
по-моему,лучше (красивее будет код и его доработка в дальшейшем) это сделать не через массивы,а через хеши ( ассоциативные массивы,короче :)) )
a = {
'вопрос 1' : {
'вопроc' : ' Что такое JS ? ',
'ответы' : [ 'JavaScript', 'JopaScript', 'JavaSuck', ' не знаю ' ],
'ответ' : 'Javascript'
},
'вопрос 2' : {
'вопроc' : 'Что вернет Number.MIN_VALUE > 0 ',
'ответы' : [ 'true', 'false', 'Error', ' не знаю ' ],
'ответ' : 'true'
}
}
1.подскажите пожалуйста функцию чтобы изменить значение массива на 5 вперед ???????????? в будущее чтоли?? 2.также интересует функция, с помощью которой сравнивать выбранный ответ с правельным и оповестить нас в алерте всем заранее спасибо!!! в случае с моим (хеш) , это :
var vopros = '2', // номер вопроса ( индекс)
otvet = 4 // ответ - индекс из массива ответов. лучше, если это циферка
var hash = a['вопрос '+vopros]; // копия хеша (массива) второго вопроса
var answer = hash['ответы']; // копия хеша ответов для второго вопроса
var answered = answer[otvet] // т.к. otvet = 4, то в answered будет храниться строка 'не знаю'
var right = hash['ответ']; // это строка ответа для вопроса
alert ( right == answered ) ; // для нас false
а теперь можно и сделать функцию
// имя функции camelStyle :)
checkAnswer = function(vopros,otvet){
var hash = a['вопрос '+vopros],
answered = hash['ответы'][otvet], // короткая запись,без создания answer
right = hash['ответ'];
return right == answered ; //возвращаем bool
}
//попробуем ответить на первый вопрос первым вариантом ответа
alert ( checkAnswer(1,1 ) ? "Правильно":"Неверно" );
я изложил примерную логику, с примерами за работоспособность пока не отвечаю ( не научился пока писать сообщения так,чтобы можно было запустить скрипт и протестировать прямо тут ) |
Цитата:
|
т.е. 3. я отвлёкся)
|
спасибо!,
появился еще один вопрос: как можно с помощью функции из quiz[0] [0] перейти к quiz [1] [0] тоесть я имею ввиду, что к чему-то нужно пребавить 1 чтобы поминять [0] [0] на [1] [0] просьба доходчиво обьяснить, еще раз заранее спасибо(мне нужно будет потом менять значение массива с помощью онклика) еще раз заранее спасибо! |
я имею ввиду в таких массивах
var quiz = [ ["Вопрос 1","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"], ["Вопрос 2","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"], ["Вопрос 3","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"] |
про хеши я ничего не понял, попрошу обьяснить через массивы т.к. мне потом надо будет описывать свою работу, а когда не понимаешь как ты это сделал- это лажа
|
var quiz = [
["Что такое JS ?","JavaScript", "JopaScript", "не знаю", "JavaScript"],
["Что вернет Number.MIN_VALUE > 0","true", "false", "не знаю", "true"]
]
checkAnswer = function(vopros, otvet){
var answered = quiz[vopros-1][otvet],
right = quiz[vopros-1][4];
return right == answered;
}
alert(checkAnswer(1,1) ? 'Правильно' : 'Неверно');
Вот как вы хотите, но присмотритесь к варианту который предложил melky, он более удобен. Цитата:
Цитата:
|
| Часовой пояс GMT +3, время: 02:24. |