Вход

Просмотр полной версии : Переименование option в селекте по клику


ghostik
16.03.2011, 09:25
Всем доброе утро, подскажите как реализовать.
Есть select в котором несколько значений, нужно что бы по нажатию на кнопку innerHTML заменялся на Англоязычное слово, в голову никакие идеи не идут кроме всем дать id и менять innerHTML по клику. Может посоветуете что-то получше? а то мне такой способ не по душе, а в голову ничего не приходит:(

<select id="length" onChange="convert();" style="display: none;">
<option value="0.001">Миллиметр</option>
<option value="0.01" selected="selected">Сантиметр</option>
<option value="0.1">Дециметр</option>
<option value="1">Метр</option>
<option value="1000">Километр</option>
<option value="0.3048">Фут</option>
<option value="0.3048/12">Дюйм</option>
<option value="4828.0417">Лига (Лье)</option>
<option value="1852">Морская миля</option>
<option value="2.54e-08">Микродюйм (мкдм)</option>
<option value="0.3048*5280">Миля</option>
<option value="0.9144">Ярд</option>
</select>

ksa
16.03.2011, 09:50
нужно что бы по нажатию на кнопку innerHTML заменялся на Англоязычное слово
Мая твая не панимайт... :(

ghostik
16.03.2011, 09:54
Я хочу сделать кнопку смена языка.
Что бы нажимаешь на неё и Миллиметр, Дециметр итд становились Millimeter, decimeter

ksa
16.03.2011, 09:56
ghostik, вона чё... :)
У селекта есть коллекция оптионс, пробегая по ней получишь все значения каждого оптион. Т.ч. ИД каждому не понадобится...

micscr
16.03.2011, 10:01
Само просто:
заведи массив:
var a = {};
a['Millimeter'] = 'Миллиметр';
...
при смене на английский пробегай по своим option, доставай что имеется, ищи соответствие в a и заменяй. Для кнопки "Русский" алгоритм еще проще будет.
Хотя по хорошему спроектируй так чтобы в некую функцию передаешь направление перевода и текущее значение, и получаешь результат

ghostik
16.03.2011, 10:02
Спасибо большое! Пойду пытаться)

Matre
16.03.2011, 10:06
function translate(rus) {
var elems = document.getElementById("length").getElementsByTagName("OPTION");
for (var i = 0; i < elems.length; i++)
elems[i].innerHTML = translate[rus][elems[i].innerHTML];
}
translate[0] = {
"Дециметр" : "Decimeter",
"Миллиметр" : "Millimeter",
"Ещё что-то" : "И перевод"
};
translate[1] = {
"Decimeter" : "Дециметр",
"Millimeter" : "Миллиметр",
"И перевод" : "Ещё что-то"
};

<input type='button' value='английский' onclick='translate(0)' />
<input type='button' value='русский' onclick='translate(1)' />

ghostik
16.03.2011, 10:43
Большое спасибо!! Все получилось!!
Сейчас буду пробовать вынести массив в отдельный файл языковой.
Я думаю просто этот файл нужно вначале подключить, а в нем просто объявить массив.
Все правильно?

ghostik
16.03.2011, 10:44
Так и оказалось) дольше писать чем делать, всем огромное спасибо!!