2010-10-12 3 views
2

У меня есть два набора списков (государственных списков) Один называется state_o и один под названием state_d и у меня есть функция, что я делаю на нихПолучить имя поля передается

function selectCountry(sel) { 
    document.getElementById("country_o").selectedIndex = states[sel.value]; 
} 

Теперь то, что я хочу сделать, это определить, является ли «sel» state_o или state_d и изменить getElementById («country_o») на _o или _d в зависимости от того, какое состояние выбрано, поэтому state_o будет делать country_o и state_d будет делать country_d

Как определить выбрать имя поля?

Спасибо!

ответ

2

Вы можете получить доступ к свойству имя через JavaScript:

function selectCountry(sel) { 
    var od = sel.name == "state_o" ? "o" : "d"; 
    document.getElementById("country_"+od).selectedIndex = states[sel.value]; 
} 

Или, если вы хотите быть немного фантазер и держать его в одной строке, ломтик о/d прямо от имени строки:

function selectCountry(sel) { 
    document.getElementById("country_"+sel.name.slice(-1)).selectedIndex = states[sel.value]; 
} 
+0

+1 Хорошее обновление чистой функции. –

0

Сохраните еще один параметр в этой функции, чтобы увидеть, есть ли его _o или _d и установить это значение в функции вызова. то в вашем яваскрипта методе вы можете назвать страну -

document.getElementById("country" + param2) 

Предполагая, что Param2 является то, что дополнительный параметр, и он будет содержать строку «_o» или «_d»

-1

Используйте sel.attr('name'), если вы используете JQuery или sel.name если просто используя обычный старый Javascript

Предполагая, что вы есть:

<SELECT name='state_o'> 
    <OPTION value='blah'>BLAH</OPTION> 
</SELECT> 
<SELECT name='state_d'> 
    <OPTION value='blah'>BLAH</OPTION> 
</SELECT> 
+0

* attr() * не является допустимой функцией для любого объекта DOM. –

+0

$ (sel), attr ("name") должно это сделать –

0

Если Я понял ваш вопрос правильно, это просто:

var field; 
if (sel.value == 'state_o') 
    field = 'country_o'; 
else 
    field = 'country_d'; 

document.getElementById(field).selectedIndex = states[sel.value]; 
0

Если sel является выберите элемент, sel.id или sel.name должен дать вам то, что вы хотите.