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

Ваш аккаунт

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

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

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

Как Items из ListBox передать в JavaScript функцию?

5.8K
21 ноября 2006 года
ivan1985
42 / / 29.06.2005
Как Items из ListBox передать в JavaScript функцию?
пытался сделать так:

function choice()
{
var list= document.form1.elements['ListBox1'];
...
// при попытке ообратится к list.Items[0].Value - ошибка

}
...

<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem>1st</asp:ListItem>
<asp:ListItem Value="2nd"></asp:ListItem>
</asp:ListBox>
273
22 ноября 2006 года
3A3-968M
1.2K / / 22.12.2005
Конечно, ведь JavaScript не может обращаться к объектам ASP.NET через управляемый код. ASP.NET контрол ListBox - это есть тэг SELECT в HTML.
Вот пример, как надо обращаться к элементам списка (javascript):
 
Код:
[SIZE=2][COLOR=#0000ff][FONT=Courier New]var[/FONT][/COLOR][/SIZE][FONT=Courier New][SIZE=2] listBox1 = document.getElementById([/SIZE][SIZE=2][COLOR=#800000]'ListBox1'[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New]);[/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]var[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] item = listBox1.childNodes(1);[/FONT]
[FONT=Courier New]alert(item.value);[/FONT]
[/SIZE]

Нумерация элементов списка с единицы.
5.8K
22 ноября 2006 года
ivan1985
42 / / 29.06.2005
спасибо, только квадратные скобки и нумерация с нуля...
5.8K
22 ноября 2006 года
ivan1985
42 / / 29.06.2005
Цитата: 3A3-968M
Конечно, ведь JavaScript не может обращаться к объектам ASP.NET через управляемый код. ASP.NET контрол ListBox - это есть тэг SELECT в HTML.


почему тогда работает:
document.form1.elements['TextBox1'].value="qwerwt";
и не работает:
document.form1.elements['ListBox1'].Items[1].value="qwerwt";
?
и в чем разница между elements[] и getElementById()?

273
23 ноября 2006 года
3A3-968M
1.2K / / 22.12.2005
Что за Items?? childNodes надо.
5.8K
23 ноября 2006 года
ivan1985
42 / / 29.06.2005
почему-то childNodes.length в два раза больше чем количество элементов. И четные элементы - undefined
Если в ListBox1 4 элемента, то выглядит это так:
childNodes[0]=undefined
childNodes[1]=1st
childNodes[2]=undefined
childNodes[3]=2nd
childNodes[4]=undefined
childNodes[5]=3d
childNodes[6]=undefined
childNodes[7]=4th
Щас сделал, чтобы брало через один - все работает, но все же в чем дело?
273
24 ноября 2006 года
3A3-968M
1.2K / / 22.12.2005
А почему через один, странно как то. Вот пример:
Код:
[FONT=Courier New]<HTML>[/FONT]
[FONT=Courier New]<HEAD>[/FONT]
[FONT=Courier New]</HEAD>[/FONT]
[FONT=Courier New]<BODY>[/FONT]
[FONT=Courier New]<SELECT ID = "ctrlSelect">[/FONT]
[FONT=Courier New]<OPTION VALUE = "VALUE1" TEXT = "TEXT1">[/FONT]
[FONT=Courier New]<OPTION VALUE = "VALUE2" TEXT = "TEXT2">[/FONT]
[FONT=Courier New]<OPTION VALUE = "VALUE3" TEXT = "TEXT3">[/FONT]
[FONT=Courier New]<OPTION VALUE = "VALUE3" TEXT = "TEXT4">[/FONT]
[FONT=Courier New]</SELECT>[/FONT]
[FONT=Courier New]<SCRIPT LANGUAGE = "javascript">[/FONT]
[FONT=Courier New] var _ctrlSelect = document.getElementById('ctrlSelect');[/FONT]
[FONT=Courier New] alert(_ctrlSelect.childNodes.length);[/FONT]
[FONT=Courier New]</SCRIPT>[/FONT]
[FONT=Courier New]</BODY>[/FONT]
[FONT=Courier New]</HTML>[/FONT]

Здесь длина дочерних узлов равна пяти (первый, это сам тэг SELECT). Приведи ASP.NET код твоего ListBox'а. И тебе обязательно это делать на клиенте, серверный код не устраивает???
5.8K
24 ноября 2006 года
ivan1985
42 / / 29.06.2005
При более тщательном рассмотрении проблема решилась:
Было <asp:ListItem>1st</asp:ListItem> вместо <asp:ListItem value="1st"></asp:ListItem>

<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem>1st</asp:ListItem>
<asp:ListItem Value="2nd"></asp:ListItem>
<asp:ListItem Value="3d"></asp:ListItem>
<asp:ListItem Value="4th"></asp:ListItem>
</asp:ListBox>

ЗЫ к сожалению серверный код не устраивает - во многих строках юзер выбирает значение из списка(видов списков мало, есть очень большие списки, все должно работать на диалапе) если для каждой строки список будет заново грузится с сервера... будет не хорошо. А так список грузится один раз.
273
26 ноября 2006 года
3A3-968M
1.2K / / 22.12.2005
Извини, чего-то я затупил. Вот решение:
Код:
[FONT=Courier New]<HTML>
<HEAD>
</HEAD>
<BODY>
<SELECT id = "select1">
<OPTION value = "option1">text1
<OPTION value = "option2">text2
<OPTION value = "option3">text3
<OPTION value = "option4">text4
</SELECT>
<SCRIPT LANGUAGE = "javascript">
 var selectControl = document.all['select1'];
 alert(selectControl.options.length);
</SCRIPT>
</BODY>
</HTML>[/FONT]

Тэги OPTION ни чем не закрываются это раз, далее обращение к элементам списка идёт через options а не через childNodes (хотя можно и через childNodes, различие только в семантике).
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог