Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Передача параметра this


Автор: s0lman 1.11.2007, 05:12
Здравствуйте все.
Вопрос в следующем. Есть элемент <select>, в зависимости от значения которого javascript выполняет определенные действия. Выглядит примерно след. образом

<script type="text/javascript">

function myfunc(chooser) {
    switch (chooser.options[chooser.selectedIndex].value) {
        case "0":   ...  ; break}
        case "1":  ... ; break;} 
        }
    }

</script> 

Вызывается на событии onchange элемента <select>
<select name="mysel" onchange="myfunc(this)">
<option>
...
</option>
</select>
 
Все работает, но когда я хочу вызвать функцию на событии onLoad примерно так

<body onLoad="myfunc(this)">
...
</body>

я не могу правильно передать функции параметр. Подскажите, плиз, что можно сделать?
Заранее спасибо.

Автор: HotHead 1.11.2007, 09:12
Есть много способов сделать это. Например, использовать getElementsByName или getElementById. Я бы использовал напрямую имя формы, которой принадлежит select и его собственное имя. Тогда получится: <body onLoad="myfunc(document.forms.имя_формы.mysel);">

Автор: s0lman 1.11.2007, 13:51
Спасибо заработало smile

Автор: GIK 1.11.2007, 14:34
Цитата

я не могу правильно передать функции параметр. Подскажите, плиз, что можно сделать?

Потому что передается ссылка на объект body, а не на select.
Код

<html>
<head>
 <script language="javascript">
 <!--
 
function myfunc(chooser) {
 
    switch (chooser.options[chooser.selectedIndex].value) 
      {
        case "1":  alert("1 element"); break;
        case "2":  alert("2 element"); break; 
        case "3":  alert("3 element"); break; 
      }  
    }

function myfunc2(bodya) {
 alert(bodya.mysel.options[0].value);
  
    }

 //-->
</script>
</head>

<body onLoad="myfunc2(this)">
 
<select name="mysel" onChange="myfunc(this)">
 <option value=1> blabla </option>
 <option value=2> blabla </option>
 <option value=3> blabla </option>

</select>


</body>
</html>

Это так для справки, лучше используй documnet.getElementById() как тебе уже сказали.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)