Поиск и сравнение в массиве
Здравствуйте. Код прокомментирован и надеюсь понятно, что я хочу сделать. Проблема с поиском и сравнением в массиве.
И еще подскажите наиболее простой и компактный метод удаления повторяющихся значений из массива.
function magic(){
var mytext = document.getElementById('countries').innerHTML; // получаем форматированный текст в виде страна|город#страна|город#...
var our_country = document.filterform.cscountry[document.filterform.cscountry.selectedIndex].value; // получаем страну, которую выбрал пользователь
var myArray = new Array();
myArray = mytext.split('#'); // делим текст на строчки страна|город и пишем в массив
if (myArray.join().search(our_country) != -1) {
myArrayCity = myArray.split('|');
country=myArrayCity[0];
city=myArrayCity[1];
var anOption = document.createElement("OPTION")
document.filterform.cscity.options.add(anOption)
anOption.innerText = myArrayCity[1];
anOption.Value = myArrayCity[1]; }
} // если наша страна есть в какой-то строке массива, то делим ее пополам и добавляем город в select
</script>
|
Zhiganov,
А может без массива?
function city(country)
{
var city = 'нет';
var mytext = "страна1|город1#страна2|город2#страна3|город3#страна4|город4#страна5|город5#";
var reg = new RegExp(".*"+country+"\\|(.*?)#.*")
if(reg.test(mytext))city = mytext.replace(reg, "$1");
return city
}
alert([city('страна3'),city('страна10')])
|
Рони, совсем не понял как этим пользоваться применительно к моему случаю, ничего не выводит.
function city(country){
var mytext = document.getElementById('countries').innerHTML;
var country = document.filterform.cscountry[document.filterform.cscountry.selectedIndex].value;
var reg = new RegExp(".*"+country+"\\|(.*?)#.*");
if(reg.test(mytext))country = mytext.replace(reg, "$1"){
alert([city(country)]);
}
|
Цитата:
|
Цитата:
<script type="text/javascript">
function magic(){
var mytext = document.getElementById('countries').innerHTML;
var form = document.filterform;
var our_country = form.cscountry[form.cscountry.selectedIndex].value;
var reg = new RegExp(".*"+our_country+"\\|(.*?)#.*")
if(our_country&®.test(mytext)){
var city = mytext.replace(reg, "$1");
var cscity = document.filterform.cscity;
cscity.options[cscity.options.length] = new Option(city, our_country);
}}
</script>
<form name="filterform" action="http://">
<div id="countries">страна1|город1#страна2|город2#страна3|город3#страна4|город4#страна5|город5#</div>
<select name="cscountry" size="3">
<option value="" selected="selected">Выберите страну</option>
<option value="страна1" >страна1</option>
<option value="страна2" >страна2</option>
<option value="страна3" >страна3</option>
<option value="страна4" >страна4</option>
<option value="страна5" >страна5</option>
</select>
<select name="cscity" size="3">
</select>
<input type="button" name="test" value="Go" onclick="magic()"/>
</form>
|
Вчера отключили интернет и не мог зайти.
Sweet, благодарю, сейчас почитаю. рони, спасибо, но я не пробовал, сделал перебор в массиве через for, оказалось все просто. |
| Часовой пояс GMT +3, время: 05:00. |