Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   switch не корректно работает (https://javascript.ru/forum/jquery/40000-switch-ne-korrektno-rabotaet.html)

rowlin 20.07.2013 18:56

switch не корректно работает
 
Доброго времени суток ..
недавно начал копаться в js .
помогите разобраться скрипт не работает или работает некоректно

Код:

<script type='text/javascript'>
$(function() {
      $("#want").change(function(){
      var Name= $('option:selected', this).attr('value');
  switch (Name) {
        case 0 :
        document.write("что хотите ??");
        break;
        case 1 :
        document.write(" я тоже ");
        break;
 case 2 :
      document.write(" я тоже ");
      break;
 case 3:
      document.write(" я тоже ");
      break;
 case 4:
      document.write(" я тоже ");
      break;
 case 5:
      document.write(" я тоже ");
      break;
};
});
    });
</script>

</head>

<body>
<div id="want">
<form>
<label for="want">Я хочу</label>
<select  id="want">
<option value="0"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5"> Что? </option>
</select>
    </form>
</div>

Хотелось бы что -бы после выбора (или не выбора ) js выводил строку или форму дл дальнейшего ввода

bes 20.07.2013 19:21

набери в поисковике document.write, открой ссылку на статью учебника на этом сайте и почитай как и когда работает этот метод (там даже жирным выделено)

danik.js 20.07.2013 19:23

1) Отформатируй код
[html] ...[/html]

2) var Name= $('option:selected', this).attr('value'); - че за борода? Пиши так:
var name = this.value;

3) У тя в кейсах числа, тогда как в переменной - строковое значение. Пиши так:
var name = this.value|0; // приводим к Number

bes 20.07.2013 19:42

да, здесь мой баг, switсh оказывается строгое соответствие наводит :-E

rowlin 20.07.2013 20:34

danik.js

sorry не весь код вставил

за устранение бороды - отбельное спасибо .. :) много времени убил на ее написание

прирощая переменую name мы получаем всегда одно и то же =(
да и хотелось бы что-б case : document.write("бла-бла") распологался ниже <select> , а не с "новой" страницы
Код:

<html>
<head>
<title>Welcome!</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="../js/jquery-1.9.1.js"></script>
 <script src="customselect.js"></script>
<script type='text/javascript'>
$(function() {
      $("#want").change(function(){
      var name = this.value|0;
  switch (name) {
 case 0 :
        document.write("что хотите ??");
        break;
 case 1 :
        document.write(" я тоже ");
        break;
 case 2 :
      document.write(" я тоже ");
      break;
 case 3:
      document.write(" я тоже ");
      break;
 case 4:
      document.write(" я тоже ");
      break;
 case 5:
      document.write(" я тоже ");
      break;
};
});
    });
</script>

</head>

<body>

<div id="want">
<form>
<label for="want">Я хочу</label>
<select  id="want">
<option value="0"></option>
<option value="1">0</option>
<option value="2">1</option>
<option value="3">2</option>
<option value="4">3</option>
<option value="5"> 4 </option>
</select>
    </form>
</div>
</body>
</html>

bes
посмотрим-почитаем
....
этот баг как-то лечится ??

bes 20.07.2013 20:52

Цитата:

Сообщение от rowlin
да и хотелось бы что-б case : document.write("бла-бла") распологался ниже <select> , а не с "новой" страницы

Цитата:

Сообщение от rowlin
bes
посмотрим-почитаем
....

да это именно оно

нужно вставлять в dom

Цитата:

Сообщение от rowlin
этот баг как-то лечится ??

ёбаный стыд? думаю, да :D

danik.js 20.07.2013 21:18

И ты не правильно атрибуты ставишь тегам <script>
Тип желательно указывать для внешних скриптов (те что с src)
А для внутренних бесполезно, так как он и так по умолчанию text/javascript

rowlin 20.07.2013 23:09

Цитата:

Сообщение от danik.js (Сообщение 263334)
И ты не правильно атрибуты ставишь тегам <script>
Тип желательно указывать для внешних скриптов (те что с src)
А для внутренних бесполезно, так как он и так по умолчанию text/javascript

понял ... т.е.

Код:

<html>
<head>
<title>Welcome!</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type='text/javascript'  src="../js/jquery-1.9.1.js"></script>
</head>

<body>

<div id="want">
<form>
<label for="want"> я хочу</label>
<select  id="want">
<option value="0"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5"> Что? </option>
</select>
    </form>
    <script>
$(function() {
      $("#want").change(function(){
  var name =this.value|0;
  switch (name) {
 case 0 :
        document.write("что хотите ??");
        break;
 case 1 :
        document.write(" я тоже ");
        break;
 case 2 :
      document.write(" я тоже ");
      break;
 case 3:
      document.write(" я тоже ");
      break;
 case 4:
      document.write(" я тоже ");
      break;
 case 5:
      document.write(" я тоже ");
      break;
};
});
    });
</script>
</div>
</body>
</html>

..только switch не работает =(

bes 20.07.2013 23:29

Цитата:

Сообщение от rowlin
только switch не работает =(

добавь к коду alert(this.tagName);
подружись с alert и console.log и количество публичных вопросов должно резко уменьшиться ;)

и danik.js тебе советовал оформлять код по-другому http://javascript.ru/formatting

rowlin 21.07.2013 00:37

Ребят ..спасибо за помощь .. решение - использовать data-toggle-id:D
тут нашел


Часовой пояс GMT +3, время: 06:02.