|
Тест (js)
|
|
| Piterski | Дата: 06 Ноября 2006, 14:39 | Сообщение # 1 | ● ● ● ● ● 26 сообщений Статус: Offline | Добрый день Андрей. В общем просьба у меня немного странная. Писать ничего не надо, уже все написанно. Я прошу Вас прокоментировать строки кода чтобы я понял что к чему в скрипте Вот скрипт | Code | | <script type="text/javascript"> function showById(id, visible) { document.getElementById(id).style.display = visible ? 'block' : 'none' } function processForm(f) { var i, s='', el var questions = new Object() var answers = new Object() for (i=0; i<f.length; i++) { el = f.elements[i] if (el.type=='radio' && el.name.indexOf('question')==0) { questions[el.name] = 0 if (el.checked) answers[el.name] = parseInt(el.value) } } //s = '\n' var asked = 0, answered = 0, score = 0 for (i in questions) asked++ for (i in answers) { //s += '\n' + i + ' = ' + answers[i] answered++ score += answers[i] } /* alert( 'Answered '+ answered + ' of ' + asked + ' questions' + '\n--------------answers:-----------------' + s + '\n ---------------------------------------' + '\nScore = ' + score ) */ if (answered < asked) { alert('Вы ответили на '+answered+' вопросов из '+asked+'. Для получения достоверного результата нужно ответить на все воросы') } else { showById('questionsForm', false) el = document.getElementById('score') el.innerHTML = (score>0) ? '+'+score : score showById('results', true) if (score > 0) showById('explain-positive', true) else if (score < 0) showById('explain-negative', true) else if (score == 0) showById('explain-zero', true) } } function resetTest() { showById('results', false) showById('questionsForm', true) document.forms['opros'].reset() } </script> | А это как вызываеться | Code | <body> <h2>Опрос</h2> <div id="questionsForm"> <form name="opros"> <p/> <strong>1.</strong><br/>Ты ежик.<br/> <input type="radio" name="question1" value="1" id="q1a1"/><label for="q1a1">Скорее "да"</label> <input type="radio" name="question1" value="-1" id="q1a2"/><label for="q1a2">Скорее "нет"</label> <br/> <hr/> <p/> <strong>2.</strong><br/>У нормального ежика 3 головы.<br/> <input type="radio" name="question2" value="1" id="q2a1"/><label for="q2a1">Скорее "да"</label> <input type="radio" name="question2" value="-1" id="q2a2"/><label for="q2a2">Скорее "нет"</label> <hr/> <p/> <strong>3.</strong><br/>А если подумать?<br/> <input type="radio" name="question3" value="1" id="q3a1"/><label for="q3a1">Скорее "да"</label> <input type="radio" name="question3" value="-1" id="q3a2"/><label for="q3a2">Скорее "нет"</label> <hr/> <p/> <strong>4.</strong><br/>Хочешь три яблочка?<br/> <input type="radio" name="question4" value="1" id="q4a1"/><label for="q4a1">Скорее "да"</label> <input type="radio" name="question4" value="-1" id="q4a2"/><label for="q4a2">Скорее "нет"</label> <hr/> <p/> <input type="button" value="Отправить" onClick="processForm(this.form)"/> <input type="reset" value="Очистить"></input> </form> </div> <hr/> <div id="results" style="display: none;"> <h3>Ваш результат: <span id="score" style="font-size: 160%"></span></h3> <div id="explain-positive" style="display: none;"> <!-- Здесь расшифровка для положительного результата --> <p>Поздравляем! Положительный результат говорит, что вы, как минимум, ежик.</p> </div> <div id="explain-negative" style="display: none;"> <!-- Здесь расшифровка для отрицательного результата --> <p>Блеск! Никогда не видел, чтоб ежики так здорово отвечали.</p> </div> <div id="explain-zero" style="display: none;"> <!-- Здесь расшифровка для нулевого результата --> <p>Удивительно! Нулевой результат - редкость. Одно из двух: вы либо еж-зануда, либо зубная щетка!</p> </div> <hr/> <p>Спасибо за участие в тестировании, йооожик :0)</p> <input type="button" value="Начать заново" onClick="resetTest()"/> </div> </body> |
| | |
|
| Andre | Дата: 06 Ноября 2006, 18:44 | Сообщение # 2 |  ● ● ● ● ● 1822 сообщения Статус: Offline | Прикольный тест Все функции, свойства и методы можно найти в интернете. Отслеживать чужую логику очень сложно, каждый программист пишет по своему, это как почерк, я бы написал скрипт совсем по другому. В общих словах, то скрипт взависимости от поставленных ответов открывает тот или иной текст, который по умолчанию скрыт. Все начинается с функции processForm() (вызывается кнопкой "Отправить", а она уже запускает другие. | | |
|
| Piterski | Дата: 06 Ноября 2006, 19:52 | Сообщение # 3 | ● ● ● ● ● 26 сообщений Статус: Offline | | Quote (Andre) | | я бы написал скрипт совсем по другому. | Немогли бы Вы написать? я если надо заплочу | | |
|
| Andre | Дата: 06 Ноября 2006, 21:00 | Сообщение # 4 |  ● ● ● ● ● 1822 сообщения Статус: Offline | | Quote (Piterski) | | Немогли бы Вы написать? | А зачем? если этот работает, да и не плохо? Если нужен конкретный сделать опрос, то другое дело. С сохранением результатов или типа этого? | | |
|
| Piterski | Дата: 06 Ноября 2006, 22:15 | Сообщение # 5 | ● ● ● ● ● 26 сообщений Статус: Offline | Типо этого чтобы тоже было сравнение | Code | if (score > 0) showById('explain-positive', true) else if (score < 0) showById('explain-negative', true) else if (score == 0) showById('explain-zero', true) } } | И с этим сравнение выводил в конце результат, а главное чтобы были комментарии чтобы я понимал что где и зачем. У меня курсач в универе, надо написать прогу самоучитель, а потом по этому самоучителю тест. И именно JavaScript + html. Сама прога это не проблема а вот тест, я же немогу его сдать не зная как написан этот тест. | | |
|
| Andre | Дата: 06 Ноября 2006, 22:26 | Сообщение # 6 |  ● ● ● ● ● 1822 сообщения Статус: Offline | | Quote (Piterski) | if (score > 0) showById('explain-positive', true) else if (score < 0) showById('explain-negative', true) else if (score == 0) showById('explain-zero', true) | ну здесь обычное сравнение переменной score с нулем, и в зависимости от сравнения запускается функция showById с двумя параметрами, первый параметр это id текста, а второй разрешение на показ этого текста на странице. что-то еще не понятно? | | |
|
| Piterski | Дата: 06 Ноября 2006, 22:31 | Сообщение # 7 | ● ● ● ● ● 26 сообщений Статус: Offline | | Quote (Andre) | | что-то еще не понятно? | Наоборот это и понятно Поэтому я сказал чтобы было сравнение. | | |
|
| Piterski | Дата: 07 Ноября 2006, 01:01 | Сообщение # 8 | ● ● ● ● ● 26 сообщений Статус: Offline | | Quote (Piterski) | function showById(id, visible) { document.getElementById(id).style.display = visible ? 'block' : 'none' } function processForm(f) { var i, s='', el var questions = new Object() var answers = new Object() for (i=0; i<f.length; i++) { el = f.elements[i] if (el.type=='radio' && el.name.indexOf('question')==0) { questions[el.name] = 0 if (el.checked) answers[el.name] = parseInt(el.value) } } //s = '\n' var asked = 0, answered = 0, score = 0 for (i in questions) asked++ for (i in answers) { //s += '\n' + i + ' = ' + answers[i] answered++ score += answers[i] } | | Quote (Piterski) | if (answered < asked) { alert('Вы ответили на '+answered+' вопросов из '+asked+'. Для получения достоверного результата нужно ответить на все воросы') } else { showById('questionsForm', false) el = document.getElementById('score') el.innerHTML = (score>0) ? '+'+score : score showById('results', true) |
| | |
|
| Andre | Дата: 07 Ноября 2006, 01:27 | Сообщение # 9 |  ● ● ● ● ● 1822 сообщения Статус: Offline | Первую функцию я уже описал: | Code | function showById(id, visible) { document.getElementById(id).style.display = visible ? 'block' : 'none' } | | Quote (Andre) | | функция showById с двумя параметрами, первый параметр это id текста, а второй разрешение на показ этого текста на странице. | document.getElementById(id) - поиск объекта на странице по id style.display= - присвоение атрибута "display" стиля visible ? 'block' : 'none' - это как if если правда(true) то ответ 'block', если ложь(false) то 'none' Про вторую функцию сложно сразу ответить, голову сломать можно об ихнию логику, но вроде переберают по объектам и определяют установлена ли галочка (выбран ли объект (checked)) уже поздно я мало соображаю, завтра только вечером смогу ответить, целый день без инета  | | |
|
| Piterski | Дата: 08 Ноября 2006, 01:22 | Сообщение # 10 | ● ● ● ● ● 26 сообщений Статус: Offline | | Quote (Andre) | | Что ж вас в университете ни чему не учат чтоль? | Учат, С,С++ Вот на нем и предлагают тест написать, а я не очень чтото освоил пока эти языки, вместо них мона на javascript  | | |
|