Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Переименование option в селекте по клику (https://javascript.ru/forum/dom-window/15847-pereimenovanie-option-v-selekte-po-kliku.html)

ghostik 16.03.2011 09:25

Переименование option в селекте по клику
 
Всем доброе утро, подскажите как реализовать.
Есть 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

Цитата:

Сообщение от ghostik
нужно что бы по нажатию на кнопку 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

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


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