<INPUT type=TEXT id=search size=35>
<INPUT type=BUTTON id=bsearch value='Найти...' onClick='poisk("search", "selFio")'><br/>
<SELECT id=selFio size=30>
<OPTION name=fio1>Иванов</OPTION>
<OPTION name=fio2>Петров</OPTION>
<OPTION name=fio3>Сидоров</OPTION>
...
</SELECT>
проблема с <select> и indexOf
Код:
И обработчик
Код:
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
}
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")
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 найденный элемент отказывается. Что делать не знаю, помогите!
Код:
<!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='Найти...' onClick='poisk("search", "selFio")'><br/>
<SELECT id=selFio size=30>
<OPTION name=fio1>Иванов</OPTION>
<OPTION name=fio2>Петров</OPTION>
<OPTION name=fio3>Сидоров</OPTION>
</SELECT>
</body>
</html>
<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='Найти...' onClick='poisk("search", "selFio")'><br/>
<SELECT id=selFio size=30>
<OPTION name=fio1>Иванов</OPTION>
<OPTION name=fio2>Петров</OPTION>
<OPTION name=fio3>Сидоров</OPTION>
</SELECT>
</body>
</html>
ошибка var s = el.options.Text.toString();
правильно var s = el.options.text.toString();
логическая оптимизация
value.toUpperCase() - выносим из цикла
break - при нахождении результата завершаем цикл