select в js. нужна помощь
Добрый вечер!
Дали лабу на селекты.. Все бы хорошо.. но не могу одну вещь додумать.. <script type="text/javascript"> var pp=0; function p(){ var a=Number(document.getElementById('pamyatniki').value); var b=Number(document.getElementById('goroda').value); if(a==b){ var s=document.getElementById('9').value; summa=Number(s)+1; document.getElementById('9').value=summa; } if(a!=b){ var pp=document.getElementById('10').value; summa1=Number(pp)+1; document.getElementById('10').value=summa1; } </script> </head> <body> <form name="po"> <table border="1"> <tr><th>Памятник</th><th>Находится в городе</th> <tr><td> <select size =4 id="pamyatniki" multiple> <option value="1">Стена Плача <br> <option value="1" >Священный камень Кааб<br> <option value="3">Медный всадник<br> <option value="4">Третьяковская галерея<br> <option value="5">Триумфальная арка<br> <option value="6">Статуя Свободы<br> <option value="7">Тауэр<br> </select> </td> <td> <select size=4 id="goroda"> <option value="1">Иepycaлим<br> <option value="2">Милан<br> <option value="3">Пapиж<br> <option value="4">Мадрид<br> <option value="5">Лoндoн<br> <option value="6">Нью-Йорк<br> <option value="7">Бepлин<br> </select> </td></tr> </table> <input type="button" value="Результат" onclick="p();"><br> Количество правильных ответов <input type="text" id="9" name="res" size="5" disabled="true"> <br> Количество неправильных ответов <input type="text" id="10" name="res1" size="5" disabled="true"> <input type="reset" value= "Обновить" onclick="reset"> </form> надо чтоб при выбре нескольких значений из обои <select> выводилось в одну переменную количество совпалений и в другую кол-во не совпавших значений.. НА данный момент я выбираю "Иерусалим" + Стена плача + Священный камень - ставит: правильно- 1.. НУ тут верно - все в коде реализовано.. Хотелось бы чтоб к примеру выбрал я "Иерусалим" + Стена плача + Священный камень + Медный Всадник - вывел: правильно 1. неправильно:1 как сделать? |
секундочку
// никак не могу понять,что это за код и что он обозначает. проверка ,правильно ли выделены памятники? if(a==b){ var s=document.getElementById('9').value; summa=Number(s)+1; document.getElementById('9').value=summa; } if(a!=b){ var pp=document.getElementById('10').value; summa1=Number(pp)+1; document.getElementById('10').value=summa1; } ......... чтобы выводить,что правильно , что не правильно , надо знать ,что неправильно. верно? я про то, что надо сделать массив (или хеш) с правильными ответами потом сравнивать массив выделенных (var a= gSI( document.getElementById('pamyatniki') );) памятников с массивом памятников для УКАЗАННОГО ГОРОДА это ж етить колотить можно по-другому для каждого памятника указан город, в котором он стоит. например,так : <table border="1"> <tr><th>Памятник</th><th>Находится в городе</th> <tr><td> <select size =4 id="pamyatniki" multiple> <option value="1" *!*to="1"*/!*>Стена Плача <br> <option value="1" *!*to="1"*/!*>Священный камень Кааб<br> <option value="3">Медный всадник<br> <option value="4">Третьяковская галерея<br> <option value="5">Триумфальная арка<br> <option value="6" *!*to="6"*/!*>Статуя Свободы<br> <option value="7">Тауэр<br> </select> </td> <td> <select size=4 id="goroda"> <option value="1">Иepycaлим<br> <option value="2">Милан<br> <option value="3">Пapиж<br> <option value="4">Мадрид<br> <option value="5">Лoндoн<br> <option value="6">Нью-Йорк<br> <option value="7">Бepлин<br> </select> </td></tr> по скрипту читать массив выделенных памятников, читать номер ( атрибут value ) и сравнивать этот номер с номером, указанным в атрибуте "to" для каждого выделенного памятника. если верно, i++ если неверно выделен, то j++ потом просто выводим i и j ну вот, примерная логика программы :) |
select у Памятников
<option value="1">Стена Плача <br> <option value="1" >Священный камень Кааб<br> <option value="3">Медный всадник<br> Заметьте, value у 2х первых памятников одинаковые! select у городов: <option value="1">Иepycaлим<br> <option value="2">Милан<br> в переменные a и b - помещаем значения value городов и памятников.. и потом в IF идет сравнение.. if(a==b){ var s=document.getElementById('9').value; summa=Number(s)+1; document.getElementById('9').value=summa; } в коде - если value у города = value памятника то +1 в поле ID9 |
вот оно. ошибка в логике. проеп массив один :)
<form name="po"> <table border="1"> <tr><th>Памятник</th><th>Находится в городе</th> <tr><td> <select size =4 id="pamyatniki" multiple> <option value="1">Стена Плача <br> <option value="1" >Священный камень Кааб<br> <option value="3">Медный всадник<br> <option value="4">Третьяковская галерея<br> <option value="5">Триумфальная арка<br> <option value="6">Статуя Свободы<br> <option value="7">Тауэр<br> </select> </td> <td> <select size=4 id="goroda"> <option value="1">Иepycaлим<br> <option value="2">Милан<br> <option value="3">Пapиж<br> <option value="4">Мадрид<br> <option value="5">Лoндoн<br> <option value="6">Нью-Йорк<br> <option value="7">Бepлин<br> </select> </td></tr> </table> <input type="button" value="Результат" onclick="p();"><br> Количество правильных ответов <input type="text" id="9" name="res" size="5" disabled="true"> <br> Количество неправильных ответов <input type="text" id="10" name="res1" size="5" disabled="true"> <input type="reset" value= "Обновить" onclick="reset"> </form> <script type="text/javascript"> function gSI (sel) { var ar = []; for (var i=0,b=sel.options.length; i < b; i++) sel.options[i].selected && ar.push(i); return ar; }; /* возвращает массив выделенных элементов */ function p(){ var ri = 0, // колво правильных fa = 0;// колво неверных var sel = document.getElementById('pamyatniki'); var right = document.getElementById('goroda').value; var ar = gSI( sel ),i = 0, b = ar.length; // цикл по массиву выделенных селектов while( i < b ){ // сравниваем значение right ( город ) со значением выделенных options. все по порядку if( sel.options[ ar[ i ] ].getAttribute('value') == right ) ++ri; else ++fa; i++; } document.getElementById('9').value=ri; document.getElementById('10').value = fa; } </script> у мадрида value 4 стоит! насчет Третьяковской галереи в мадриде ничего не ведаю :) |
vladislav_m,
та да с географией проблемы тауэр в берлине и прочее. мож ну его программирование и поднажать на географию ,историю,культуру....? |
melky, спасибо!
dmitriymar, в данной лабе будут смотреть на реализацию, а не на правильность соотношения памятников и городов |
melky, потестил.. пашет на ура)) только, как заставить его чтоб он считал кол-во правильных и неправильных? а то он 1:0 , 0:1 ставит(
|
вот я его и заставил считать правильно, обращая внимание на value
value из id="pamyatniki" будет считаться верным,если выбран город с таким же value т.е стана плача для иерусалима и Тауэр в Берлине. )) смотри на их value <select size =4 id="pamyatniki" multiple> <option value="1">Стена Плача <br> <option value="1" >Священный камень Кааб<br> <option value="3">Медный всадник<br> <option value="4">Третьяковская галерея<br> <option value="5">Триумфальная арка<br> <option value="6">Статуя Свободы<br> <option value="7">Тауэр<br> </select> </td> <td> <select size=4 id="goroda"> <option value="1">Иepycaлим<br> <option value="2">Милан<br> <option value="3">Пapиж<br> <option value="4">Мадрид<br> <option value="5">Лoндoн<br> <option value="6">Нью-Йорк<br> <option value="7">Бepлин<br> </select> |
я имел ввиду, ели 3 раза правильных варианта выбрать в поле стояло 3. просто если выбрать 2ой раз правильный вариант - он предыдущее значение стирает и снова 1 ставит.
или такое в данном коде не сделать? |
Цитата:
вот тут? у меня вроде все нормально. |
Часовой пояс GMT +3, время: 07:12. |