Javascript.RU

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

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

как сделать?
Ответить с цитированием
  #2 (permalink)  
Старый 01.04.2011, 22:38
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

секундочку

//

никак не могу понять,что это за код и что он обозначает. проверка ,правильно ли выделены памятники?

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

ну вот, примерная логика программы

Последний раз редактировалось melky, 02.04.2011 в 09:09.
Ответить с цитированием
  #3 (permalink)  
Старый 01.04.2011, 23:04
Новичок на форуме
Отправить личное сообщение для vladislav_m Посмотреть профиль Найти все сообщения от vladislav_m
 
Регистрация: 01.04.2011
Сообщений: 9

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
Ответить с цитированием
  #4 (permalink)  
Старый 01.04.2011, 23:34
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

вот оно. ошибка в логике. проеп массив один

<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 стоит! насчет Третьяковской галереи в мадриде ничего не ведаю
Ответить с цитированием
  #5 (permalink)  
Старый 01.04.2011, 23:54
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

vladislav_m,
та да с географией проблемы тауэр в берлине и прочее.
мож ну его программирование и поднажать на географию ,историю,культуру....?
Ответить с цитированием
  #6 (permalink)  
Старый 02.04.2011, 00:00
Новичок на форуме
Отправить личное сообщение для vladislav_m Посмотреть профиль Найти все сообщения от vladislav_m
 
Регистрация: 01.04.2011
Сообщений: 9

melky, спасибо!

dmitriymar, в данной лабе будут смотреть на реализацию, а не на правильность соотношения памятников и городов
Ответить с цитированием
  #7 (permalink)  
Старый 02.04.2011, 00:13
Новичок на форуме
Отправить личное сообщение для vladislav_m Посмотреть профиль Найти все сообщения от vladislav_m
 
Регистрация: 01.04.2011
Сообщений: 9

melky, потестил.. пашет на ура)) только, как заставить его чтоб он считал кол-во правильных и неправильных? а то он 1:0 , 0:1 ставит(
Ответить с цитированием
  #8 (permalink)  
Старый 02.04.2011, 00:17
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

вот я его и заставил считать правильно, обращая внимание на 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>
Ответить с цитированием
  #9 (permalink)  
Старый 02.04.2011, 00:38
Новичок на форуме
Отправить личное сообщение для vladislav_m Посмотреть профиль Найти все сообщения от vladislav_m
 
Регистрация: 01.04.2011
Сообщений: 9

я имел ввиду, ели 3 раза правильных варианта выбрать в поле стояло 3. просто если выбрать 2ой раз правильный вариант - он предыдущее значение стирает и снова 1 ставит.
или такое в данном коде не сделать?
Ответить с цитированием
  #10 (permalink)  
Старый 02.04.2011, 09:08
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от melky Посмотреть сообщение

<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>

вот тут?

у меня вроде все нормально.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS Jquery нужна помощь globalus2010 Javascript под браузер 1 25.03.2011 00:05
Нужна помощь, если можно Fox-WNT Общие вопросы Javascript 3 27.07.2010 11:38
Очень нужна помощь с Ext JS dcbal ExtJS 1 09.07.2010 13:15
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17
Кроссдоменный GET запрос. Нужна помощь! notxcain AJAX и COMET 4 07.12.2008 20:55