Вызов различных функций Javascript в событии HTML с разными аргументами - PullRequest
0 голосов
/ 06 октября 2011

У меня есть раскрывающийся список html, который содержит пункты «Привет» и «До свидания».

Что я хочу сделать, так это вызвать функции JavaScript, в зависимости от того, что пользователь выбирает из раскрывающегося списка, другая функция будетвызываться в зависимости от выбранного значения.Я также хочу передать значение элемента раскрывающегося списка в параметр функции события onchange.

Я объявил HTML-элемент управления следующим образом:

<select name="hellobye" id="hellobye" class="pulldown" onchange="sayHello or SayGoodbye(*PULLDOWN SELECTED ITEM TEXT HERE*);"></select>

мои функции javascript:

function sayHello(msg)
{
    alert(msg);
}

function sayGoodbye(msg)
{
    alert(msg);
}

Пожалуйста, можно мне совет?Спасибо.

Ответы [ 4 ]

0 голосов
/ 06 октября 2011

Используя this.value, вы можете захватить значение выбора и использовать его в одной функции, возможно, с оператором switch():

function sayAnything(){
  switch(this.value){
    case 'goodbye': alert('I said goodbye!');
    case 'hello' : alert('I said hello!');
    default: alert('Im not sure what I said!');
  }
}

Это будет хорошо работать, если у вас есть конечный и управляемыйсписок опций выбора, если вы этого не сделаете, вы можете посмотреть назначение функций после того, как выбор будет отображен вместо каждого элемента, например:

<select id="list">
  <options*many value="..." />
</select>

Y.one('#list').children().on('click', function(){
  sayAnything(this.value);
});

Вам нужно будет поставить тест для selectedIndex тамгде-то, но общая идея состояла бы в том, чтобы сделать вызов sayAnything () общим, а значение выбранного параметра передается через вызов этого общего метода.

0 голосов
/ 06 октября 2011

Попробуйте что-то вроде этого:

function sayHello(msg)
{
    alert(msg);
}

function sayGoodbye(msg)
{
    alert(msg);
}

function say()
{
 var pulldown = document.getElementById("hellobye");
 var selectedValue = pulldown.options[pulldown.selectedIndex].value;

 if(selectedValue == helloMsgValue)
 {
  sayHelo(msg);
 }
 else
 {
   sayGoodbye(msg)
 }
}

<select name="hellobye" id="hellobye" class="pulldown" onchange="say();"></select>
0 голосов
/ 06 октября 2011

Если вы собираетесь передать сообщение функциям, то почему бы просто не иметь одну функцию say:

function say(msg)
{
    alert(msg);
}

Тогда JavaScript в HTML выглядит так:

<select name="hellobye" id="hellobye" class="pulldown" onchange="say(this.value == 'hello' ? 'Hello there' : 'Goodbye to you');">
  <option value="hello">hello</option>
  <option value="goodbye">goodbye</option>
</select>

Который использует троичный оператор, чтобы решить послать привет или прощай сообщение.

statement to test ? execute if true : execute if false

Добавление:

Если вам нужно сохранить свои отдельные функции, то это должно работать

<select name="hellobye" id="hellobye" class="pulldown" onchange="this.value == 'hello' ? sayHello('Hello there') : sayGoodbye('Goodbye to you') ;">
  <option value="hello">hello</option>
  <option value="goodbye">goodbye</option>
</select>
0 голосов
/ 06 октября 2011

Попробуйте использовать this.value в onchange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...