Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: что тут не так?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » что тут не так?

Страниц (1): [1]
 

1. livote - 29 Октября, 2012 - 19:58:02 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <!-- jq подключено -->
  3. <script>
  4. $(document).ready(function() {
  5.  
  6. $('#votSel').change(function(){
  7.         var vyb = $('#votSel :selected').val();
  8.         var kolsop = $('#kolsop');
  9.         switch(vyb) {  
  10.         case 2:
  11.         kolsop.html('Выбрано 2');
  12.         break;
  13.         case 3:
  14.         kolsop.html('Выбрано 3');
  15.         break;
  16.         case 4:
  17.         kolsop.html('Выбрано 4');      
  18.         break;
  19.         case 5:
  20.         kolsop.html('Выбрано 5');      
  21.         break;
  22.        
  23.         }
  24.         });
  25.  
  26.  
  27. });
  28.  
  29. </script>
  30. <form name="form" id="form">
  31.  <span>Сколько соперников:</span>
  32.  <select name="vot" size="1" id="votSel">
  33.  <option value="2">2 соперника</option>
  34.  <option value="3">3 соперника</option>
  35.  <option value="4">4 соперника</option>
  36.  <option value="5">5 соперников</option>
  37.  </select>
  38. </form>
  39. <div id="kolsop">
  40.  
  41. </div>
  42.  


результат не отображается в div-e.почему? может где-то ошибся?js недавно изучать начал
2. IllusionMH - 29 Октября, 2012 - 20:10:34 - перейти к сообщению
livote, можно было бы и проверить
CODE (javascript):
скопировать код в буфер обмена
  1. console.log(typeof vyb);

и потом уже либо
CODE (javascript):
скопировать код в буфер обмена
  1.  switch (parseInt(vyb, 10)) {

либо
CODE (javascript):
скопировать код в буфер обмена
  1. var vyb = parseInt($('#votSel :selected').val(), 10);

а еще лучше убрать ненужный jQ из этого кода(не только в примере ниже) и получать значение переменной так
CODE (javascript):
скопировать код в буфер обмена
  1. var vyb = parseInt(this.value, 10);

(Добавление)
livote пишет:
js недавно изучать начал

вот лучше учите сначала чистый JS, а не начинать сразу с jQuery
3. ingram - 29 Октября, 2012 - 20:35:46 - перейти к сообщению
IllusionMH пишет:
а еще лучше убрать ненужный jQ из этого кода(не только в примере ниже) и получать значение переменной так
CODE (javascript):
скопировать код в буфер обмена
  1. var vyb = parseInt(this.value, 10);



Получить значение селекта чуть чуть сложнее чем получить значение обычного элемента формы. И использование JQ значительно сокращает запись.

Прост сам недавно писал на читом JS выглядит это примено так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var objSel = document.getElementById("Select1");
  3. alert(objSel.options[objSel.selectedIndex].value);
  4.  
4. IllusionMH - 29 Октября, 2012 - 21:13:17 - перейти к сообщению
ingram, выглядит короче, но работает медленнее.
И, как минимум, обращение к объекту через $(selector) который можно получить через this - одна из основных плохих практик в jQ.
В данном же примере jQ играет только роль тормоза как во времени исполнения, так и в обучении JS.
ingram пишет:
Получить значение селекта чуть чуть сложнее чем получить значение обычного элемента формы.

Да, можно расписать и так, все равно будет быстрее. ИЕ8+ уже отлично работает с value. На счет 6-7 - хз, но это уже просто трата времени их поддерживать.

 

Powered by ExBB FM 1.0 RC1