Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2011, 19:14
Новичок на форуме
Отправить личное сообщение для maxas Посмотреть профиль Найти все сообщения от maxas
 
Регистрация: 28.03.2011
Сообщений: 4

функции и массивы
вообщем так: я совершенно недавно начал изучать javascript и сейчас я решил создать викторину. у меня есть вопрос, три варианта ответа и ответ, все это забито в 1 массив, тоесть a=new array('вопрос 1", "вариант ответа 1", "вариант ответа 2", "вариант ответа 3", "правельный ответ(совпадает с одним из вариантов)"', вопрос 2", "вариант ответа 1", "вариант ответа 2", "вариант ответа 3", "правельный ответ(совпадает с одним из вариантов)") итд по этому у меня есть несколько вопросов:
1.подскажите пожалуйста функцию чтобы изменить значение массива на 5 вперед
2.также интересует функция, с помощью которой сравнивать выбранный ответ с правельным и оповестить нас в алерте
всем заранее спасибо!!!
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2011, 19:53
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

по-моему,лучше (красивее будет код и его доработка в дальшейшем) это сделать не через массивы,а через хеши ( ассоциативные массивы,короче ) )

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 (permalink)  
Старый 28.03.2011, 20:33
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от melky
var answered = answer[otvet] //  т.к. otvet = 4, то в answered будет храниться строка 'не знаю'
в answered будет храниться строка 'undefined'. Массив начинается с нуля а не с 1.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #4 (permalink)  
Старый 28.03.2011, 20:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

т.е. 3. я отвлёкся)
Ответить с цитированием
  #5 (permalink)  
Старый 28.03.2011, 21:19
Новичок на форуме
Отправить личное сообщение для maxas Посмотреть профиль Найти все сообщения от maxas
 
Регистрация: 28.03.2011
Сообщений: 4

спасибо!,
появился еще один вопрос: как можно с помощью функции из quiz[0] [0] перейти к quiz [1] [0] тоесть я имею ввиду, что к чему-то нужно пребавить 1 чтобы поминять [0] [0] на [1] [0] просьба доходчиво обьяснить, еще раз заранее спасибо(мне нужно будет потом менять значение массива с помощью онклика)
еще раз заранее спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 28.03.2011, 21:20
Новичок на форуме
Отправить личное сообщение для maxas Посмотреть профиль Найти все сообщения от maxas
 
Регистрация: 28.03.2011
Сообщений: 4

я имею ввиду в таких массивах


var quiz = [
["Вопрос 1","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"],
["Вопрос 2","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"],
["Вопрос 3","Ответ 1", "Ответ 2", "Ответ 3", "Правильный ответ"]
Ответить с цитированием
  #7 (permalink)  
Старый 28.03.2011, 21:22
Новичок на форуме
Отправить личное сообщение для maxas Посмотреть профиль Найти все сообщения от maxas
 
Регистрация: 28.03.2011
Сообщений: 4

про хеши я ничего не понял, попрошу обьяснить через массивы т.к. мне потом надо будет описывать свою работу, а когда не понимаешь как ты это сделал- это лажа
Ответить с цитированием
  #8 (permalink)  
Старый 28.03.2011, 22:23
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

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, он более удобен.


Сообщение от maxas
про хеши я ничего не понял
Сообщение от melky
ассоциативные массивы,короче
Подробнее тут: Ассоциативный_массив#JavaScript
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай

Последний раз редактировалось walik, 28.03.2011 в 22:34.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение переменной в функции ananax Общие вопросы Javascript 19 12.01.2011 12:09
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
Специфические функции и свойства различных браузеров onejsquestion Javascript под браузер 3 28.06.2010 10:54
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Массивы и функции.. Ну Я дуб! Элементы интерфейса 4 09.11.2009 20:36