Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятки с свойством selected 
:(
    Опции темы
poison4401
  Дата 2.7.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.7.2006

Репутация: нет
Всего: нет



Всем привет.

Я новичок в JavaScript. Есть проблема, которая должна решаться очень просто. Но я не нашел ключика.
Есть скрипт, работает в FF, а в IE нет, при этом даже ошибок не выдает. Просто не срабатывает.

На странице в форме есть 3 select'a - в виде элементов от 1 до 100. 

Код

.....
<select name="proc1" onchange="recalc('proc1');">
                <?
                for ($i=1;$i<100;$i++){
                echo'<option value="'.$i.'"';if (isset($proc1) and $proc1==$i){echo'  selected';}echo'>'.$i.'</option>';
                };
                ?>
                </select>
<select name="proc2" onchange="recalc('proc2');">
                <?
                for ($i=1;$i<100;$i++){
                echo'<option value="'.$i.'"';if (isset($proc2) and $proc2==$i){echo'  selected';}echo'>'.$i.'</option>';
                };
                ?>
                </select>
<select name="proc3" onchange="recalc('proc3');">
                <?
                for ($i=1;$i<100;$i++){
                echo'<option value="'.$i.'"';if (isset($proc3) and $proc3==$i){echo'  selected';}echo'>'.$i.'</option>';
                };
                ?>
                </select>
.....


Есть функция recalc, которая в зависимости от того в каком селекте она срабатывает выполняет некую арифметику. 
А именно, сумма всех выбранных элементов должна быть 100! То есть, по умолчанию во всех трех селектах выбран 1. После того как вы измените значение в proc1, то proc2 должен быть тоже обновлен, с учетом выбранных элементов в 2 других списках. При этом сумма должна быть 100%. И так далее, затем выбираем значение в proc2(если предложенное программой нам не понравилось), и proc3 обновляется в зависимости от выбора 2 других селектов.

Проблема в том, что функция в IE почему-то после пересчета не изменяет элементы в proc2 и proc3. Но где ошибка?

Код

function recalc(what){
var opt1 = formname.proc1.options[formname.proc1.selectedIndex].value;
var opt2 = formname.proc2.options[formname.proc2.selectedIndex].value;
var opt3 = formname.proc3.options[formname.proc3.selectedIndex].value;

if (what=="proc1"){//если был изменен первый селект, то обновить второй селект
var ost = 100 - opt1 - opt3;
document.formname.proc2.options[ost].selected=true;
}
if (what=="proc2"){//если был изменен второй селект,  то обновить третий селект
var ost = 100 - opt1 - opt2;
document.formname.proc3.options[ost].selected=true;
}
};


Если кто может сказать в чем проблема, напишите тут или мне на мыло. Огромное спасибо.

Сергей

 
PM MAIL   Вверх
igorold
Дата 3.7.2006, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 2
Всего: 17



Попробуй так:
Код

.....
<select name="proc1" onchange="recalc('proc1');" id="proc1">
.....
<select name="proc2" onchange="recalc('proc1');" id="proc2">
.....
<select name="proc3" onchange="recalc('proc1');" id="proc3">


Код

.............
var s1 = document.getElementById('proc1');
var opt1 = s1.options[s1.selectedIndex].value;
var s2 = document.getElementById('proc2');
var opt2 = s2.options[s2.selectedIndex].value;
var s3 = document.getElementById('proc3');
var opt3 = s3.options[s3.selectedIndex].value;
..............

извини, не проверил ...  smile  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
poison4401
Дата 3.7.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.7.2006

Репутация: нет
Всего: нет



Спасибо за совет. 
Но суть проблемы не в этом месте. 
Все рассчеты функция делает правильно, а вот когда дело доходит до строки 

Код

document.formname.proc2.options[ost].selected=true;
,

то это никак не влияет на выбор ost-ого элемента данного списка proc2 в IE.
То есть моя ошибка в том, что в этой строке я якобы не правильно обращаюсь к proc2 с просьбой выбора нужного мне option'a.

Как правильно обратиться-то? Как правильно указать что я хочу чтобы selected было именно ost-ый элемент, чтобы IE понял это наконец?

Даже написав 

document.getElementById('proc2').options[ost].selected=true;

в FF работает, а в IE нет.

Сергей  

Это сообщение отредактировал(а) poison4401 - 3.7.2006, 16:20
PM MAIL   Вверх
igorold
Дата 4.7.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 2
Всего: 17



у меня тоже не работало, пока я не заменил имя функции recalc на recalc2

попробуй - замени везде ...  
Код

function recalc2(what)

Код

<select name="proc1" id="proc1" onChange="recalc2(this.name);">
..........................
 

Это сообщение отредактировал(а) igorold - 4.7.2006, 09:02


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
poison4401
  Дата 4.7.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 2.7.2006

Репутация: нет
Всего: нет



Да, спасибо, заработало. 
Значит вызывал selected я правильно, просто на onchange функция не правильно срабатывала.

 
PM MAIL   Вверх
igorold
Дата 4.7.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 2
Всего: 17



ну да, видимо recalc - это какое-то зарезервированное слово в IE .... 
... ну что я могу сказать - учись отлаживать свои скрипты / программы ...  smile  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.