Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проблема с <select> и indexOf

58K
06 мая 2010 года
Sad1k
2 / / 06.05.2010
Есть некий код HTML
 
Код:
<INPUT type=TEXT id=search size=35>
<INPUT type=BUTTON id=bsearch value='Найти...' &#111;&#110;Click='poisk("search", "selFio")'><br/>
<SELECT id=selFio size=30>
      <OPTION name=fio1>Иванов</OPTION>
      <OPTION name=fio2>Петров</OPTION>
      <OPTION name=fio3>Сидоров</OPTION>
      ...
</SELECT>

И обработчик
Код:
function poisk(k, id){
   var el2 = document.getElementById(k);  //что ищем
   var el  = document.getElementById(id);  //где ищем
   for (var i=0; i<=el.options.length; i++){
      var s = el.options.Text.toString();
      var x = s.indexOf( el2.value.toUpperCase() );    
      alert(x.toString());
      if ( x != -1 ){
         el.options.selected=true;
      } //end if
   } //end for
}


Суть в том, что метод indexOf() в обработчике вызывает ошибку (хотя может и не он).
Opera говорит:
Цитата:
Uncaught exception: TypeError: Cannot convert 's' to object
Error thrown at line 53, column 2 in poisk(k, id) in http://kyrs/script.js:
var x = s.indexOf( el2.value.toUpperCase() );
called from line 1, column 0 in <anonymous function>(event):
poisk("search", "selFio")



google chrome:

Цитата:
Uncaught TypeError: Cannot call method 'indexOf' of undefined



Выделять в теге Select найденный элемент отказывается. Что делать не знаю, помогите!

339
10 мая 2010 года
verybadbug
619 / / 12.09.2005
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>

  <script type="text/javascript" language="JavaScript">
  function poisk(k, id){
    var s = document.getElementById(k).value.toUpperCase(),  //что ищем
        el = document.getElementById(id),  //где ищем
        x;
    if (s == '') { return false; }
    for (var i = 0; i < el.options.length; i++) {
      x = el.options.text.toUpperCase().indexOf(s);
      if ( x != -1 ) {
        el.options.selected=true;
        break;
      }
    }
  }
  </script>

  </head>
  <body>

<INPUT type=TEXT id=search size=35>
<INPUT type=BUTTON id=bsearch value='Найти...' &#111;&#110;Click='poisk("search", "selFio")'><br/>
<SELECT id=selFio size=30>
      <OPTION name=fio1>Иванов</OPTION>
      <OPTION name=fio2>Петров</OPTION>
      <OPTION name=fio3>Сидоров</OPTION>
</SELECT>

  </body>
</html>
339
10 мая 2010 года
verybadbug
619 / / 12.09.2005
javascript - регистрозависимый язык!

ошибка var s = el.options.Text.toString();
правильно var s = el.options.text.toString();

логическая оптимизация
value.toUpperCase() - выносим из цикла
break - при нахождении результата завершаем цикл
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог