Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Два селекта на сравнении (https://javascript.ru/forum/misc/16707-dva-selekta-na-sravnenii.html)

leshkoff 18.04.2011 18:22

Два селекта на сравнении
 
Набросал такой код, вернее форму со скриптом:
Код:

<div align="center"><form name="calcForm">
<script>
function language(){
chto=document.getElementById('lang11').value;
if(chto=='l1rus'){
document.calcForm.lang2.options.length=0;
document.calcForm.lang2.options[0]=new Option("---", "0", true, false);
document.calcForm.lang2.options[1]=new Option("Английский", "l2eng", false, false);
document.calcForm.lang2.options[2]=new Option("Немецкий", "l2deu", false, false);
document.calcForm.lang2.options[3]=new Option("Французский", "l2fra", false, false);
}
if(chto=='l1eng'){
document.calcForm.lang2.options.length=0;
document.calcForm.lang2.options[0]=new Option("---", "0", true, false);
document.calcForm.lang2.options[1]=new Option("Русский", "l2rus", false, false);
}
if(chto=='l1deu'){
document.calcForm.lang2.options.length=0;
document.calcForm.lang2.options[0]=new Option("---", "0", true, false);
document.calcForm.lang2.options[1]=new Option("Русский", "l2rus", false, false);
}
if(chto=='l1fra'){
document.calcForm.lang2.options.length=0;
document.calcForm.lang2.options[0]=new Option("---", "0", true, false);
document.calcForm.lang2.options[1]=new Option("Русский", "l2rus", false, false);
}
}
</script>
<n>Перевести с </n>
<select name="lang1" id="lang11" size="1" onchange="language()">
<option value="0">---</option>
<option name="l1rus" value="l1rus">Русского</option>
<option name="l1eng" value="l1eng">Английского</option>
<option name="l1deu" value="l1deu">Немецкого</option>
<option name="l1fra" value="l1fra">Французского</option>
</select><n> языка на </n>
<select name="lang2" id="lang2"size="1" onchange="prices()">
<option value="0">---</option>
</select> <n> язык</n>
</form></div>

А дальше сообразить не могу. Мне нужно на основании обоих выбранных селектов образовать цену. Например: с английского на русский - 100, с русского на французский - 101.
Пробовал и через массив (знаю что не правильно), и через селектединдекс... Но ничего не работает.

Народ, подскажите, хотя бы в каком направлении двигаться?

melky 18.04.2011 19:50

не написали,откуда цены берете

я поставил их в value select'ов

<div align="center"><form name="calcForm">
<n>Перевести с </n>
<select name="lang1" id="lang11" size="1" onchange="language()">
<option value="0">---</option>
<option name="l1rus" value="1">Русского</option>
<option name="l1eng" value="2">Английского</option>
<option name="l1deu" value="3">Немецкого</option>
<option name="l1fra" value="4">Французского</option>
</select>
<n> языка на </n>
<select name="lang1" id="lang12" size="1">
<option value="0">Русский</option>
<option value="10">Английский</option>
<option value="20">Немецкий</option>
<option value="30">Французский</option>
</select> <n> язык</n>
</form>
<b>Цена : <u>0</u></b>
</div>
<script>

   a = document.getElementsByTagName("u")[0]
pr =  document.getElementsByTagName("select") 

pr[0].onchange = pr[1].onchange = function(){
 
  a.innerHTML = +pr[0].value + pr[1].value;

}
</script>

рони 18.04.2011 20:42

leshkoff,
Вариант формирования селекта и цены ...
<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <div align="center">
    <form name="calcForm" id="calcForm">
      <span>Перевести с</span>
       <select name="lang1" id="lang1" size="1" onchange="lang_set(this.value)">
        <option value="">---</option>
        <option value="rus">Русского</option>
        <option value="eng">Английского</option>
        <option value="deu">Немецкого</option>
        <option value="fra">Французского</option>
      </select>
      <span>языка на</span>
      <select name="lang2" id="lang2" size="1" onchange="prices(this.value)">
        <option value="0">---</option>
      </select>
       <span>язык</span>
       <br>
      <span>цена: </span><span id="price"></span>
    </form>
  </div><script type="text/javascript">
var lang_rus = {'rus':'Русский','eng':'Английский','deu':'Немецкий','fra':'Французский'},
    lang = {
  'rus':{'eng':100,'deu':101,'fra':102},
  'eng':{'rus':103,'deu':104,'fra':105},
  'deu':{'rus':106,'eng':107,'fra':108},
  'fra':{'rus':109,'eng':110,'deu':111}
};
function lang_set(b) {
    var a = document.calcForm.lang2;
    a.options.length = 1;
    if(lang[b])for (var c in lang[b]) a.options[a.options.length] = new Option(lang_rus[c], lang[b][c]);
    prices(0)
};
function prices(a)
{
  document.getElementById('price').innerHTML = a
}
</script>
</body>
</html>

рони 18.04.2011 20:51

Цитата:

Сообщение от melky
a.innerHTML = pr[0].value + pr[1].value;

Может плюсик добавить перед pr[0].value?

melky 18.04.2011 22:16

хоть и строка, но в хроме и так работает :)


Часовой пояс GMT +3, время: 15:03.