За последние 24 часа нас посетил 22961 программист и 1267 роботов. Сейчас ищут 779 программистов ...

Не срабатывает Switch

Тема в разделе "JavaScript и AJAX", создана пользователем denis_alekss, 7 дек 2020.

  1. denis_alekss

    denis_alekss Новичок

    С нами с:
    1 дек 2020
    Сообщения:
    8
    Симпатии:
    0
    Задача такая, при нажатии на одну из 3 кнопок должны вывестись надпись
    Эй [Имя] Вы выбрали [цвет на русском] цвет и должен поменяться цвет фона.
    Код (Text):
    1.    document.write("Эй, " + rez + " Вы выбрали "+color + " цвет");
    Цвет фона меняется, но вывод надписи на экран не происходит.Как сократить в операторе Switch код?
    Код (Text):
    1.  
    2.  
    3. <!DOCTYPE HTML>
    4. <html>
    5.  <head>
    6.   <meta charset="utf-8">
    7.   <title>Тестовая страничка</title>
    8.  
    9.  </head>
    10.  <body>
    11. <p>Выбрать цвет фона</p>
    12. <FORM>
    13.  <INPUT TYPE="button" VALUE="Голубой"
    14.   onClick="newcolor('lightblue')">
    15.  <INPUT TYPE="button" VALUE="Розовый"
    16.   onClick="newcolor('pink')">
    17. <INPUT TYPE="button" VALUE="Вернуть"
    18.   onClick="newcolor('white')">
    19. </FORM>
    20.   <SCRIPT LANGUAGE="JavaScript">
    21.  
    22.  
    23. function newcolor(color){
    24.    var rez = prompt("Пожалуйста введите свое имя...","Имя");
    25.    document.bgColor=color;
    26.    switch(color){
    27.    case color == 'lightblue': color = 'Светло-голубой';
    28.    document.write("Эй, " + rez + " Вы выбрали "+color + " цвет");
    29.    break;
    30.    case color == 'pink': color = 'розовый';
    31.    document.write("Эй, " + rez + " Вы выбрали "+color + " цвет");
    32.    break;
    33.    case color == 'white': color = 'белый';
    34.    document.write("Эй, " + rez + " Вы выбрали "+color + " цвет");
    35.    break;
    36.  }
    37. }
    38.  
    39. </SCRIPT>
    40.  </body>
    41. </html>
     
  2. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @denis_alekss, ознакомьтесь: Конструкция "switch".
    И сравните с тем, как она применяется у вас. Особенно присмотритесь к условию в блоке case.
     
  3. denis_alekss

    denis_alekss Новичок

    С нами с:
    1 дек 2020
    Сообщения:
    8
    Симпатии:
    0
    Переписал так, но цвет фона не меняется почему-то
    Код (Text):
    1.  
    2. <!DOCTYPE HTML>
    3. <html>
    4.  <head>
    5.   <meta charset="utf-8">
    6.   <title>Тестовая страничка</title>
    7.  
    8.  </head>
    9.  <body>
    10.  
    11. <p>Выбрать цвет фона</p>
    12. <FORM>
    13.  <INPUT TYPE="button" VALUE="Голубой"
    14.   onClick="newcolor('lightblue')">
    15.  <INPUT TYPE="button" VALUE="Розовый"
    16.   onClick="newcolor('pink')">
    17. <INPUT TYPE="button" VALUE="Вернуть"
    18.   onClick="newcolor('white')">
    19. </FORM>
    20.  
    21.  
    22.   <SCRIPT LANGUAGE="JavaScript">
    23. function newcolor(color){
    24.    var rez = prompt("Пожалуйста введите свое имя...","Имя");
    25.    
    26. switch(color){
    27.   case 'lightblue':
    28.   color = 'Светло-голубой';
    29.    break;
    30.  
    31.   case 'pink':
    32.   color = 'розовый';
    33. break;
    34.  
    35.   case 'white':
    36.   color = 'белый';
    37.    break;
    38.  }
    39.   document.bgColor=color;
    40.    document.write("Эй, " + rez + " Вы выбрали "+color + " цвет");
    41.  }
    42.  
    43.  
    44. </SCRIPT>
    45.  </body>
    46. </html>
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Выводимое название цвета отображается?
    Во-первых, свойство bgColor объявлено как deprecated. (Подробнее), одна из альтернатив: document.body.bgColor.
    Во-вторых, в 39-й строке приведённого в #3 кода - переменная color уже содержит "название", а не "идентификатор" цвета.
     
  5. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    пытася сам с собой разговаривать когда решаешь задачу.
    - где у меня задается цвет нужному элементу?
    - тому ли элементу я задаю цвет
    - правильно ли я его задаю

    на 38 строке я вижу что ты для document.bgColor присваеваешь значение = строку на русском языке "белый", я не уверен что оно так работает. (по крайней мере не ра русском языке)

    второе, почитай что такое document.write. (если я не ошибаюсь document.write грубо говоря удаляет все со страницы и вставляет текст с новой разметкой, соответственно то что ты хотеля перекрасить тоже удаляется).Ты знаешь что таоке консоль разработчика? нажми на странице F12 и посмотри структуру DOM. Нажимай кнопки и смотри меняется что то или нет?

    третье - везде в js коде раставляй console.log('я тут') console.log('а тперь тут')... и смотри куда ты заходишь и как ты вызываешь функции, потом когда поймешь куда ты заходишь в console.log поменяй "я тут" на сolor (подставляй переменные)

    glhf
     
    denis_alekss нравится это.
  6. denis_alekss

    denis_alekss Новичок

    С нами с:
    1 дек 2020
    Сообщения:
    8
    Симпатии:
    0
    Вот так сработало.
    Код (Javascript):
    1. <!DOCTYPE HTML>
    2. <html>
    3. <head>
    4.   <meta charset="utf-8">
    5.   <title>Тестовая страничка</title>
    6.  
    7.     <SCRIPT type="text/JavaScript">
    8. function newcolor(color){
    9.     var rez = prompt("ПAжалуйста введите свое имя...","Имя");
    10.     var color1 = "";
    11. switch(color){
    12.     case 'lightblue':
    13.         color1 = 'Светло-голубой';
    14.     break;
    15.     case 'pink':
    16.         color1 = 'розовый';
    17.     break;
    18.     case 'white':
    19.         color1 = 'белый';
    20.     break;
    21. }
    22.     document.write("Эй, " + rez + ", Вы выбрали "+color1 + " цвет");
    23.     document.bgColor=color;
    24. }
    25. </SCRIPT>
    26. </head>
    27. <body>
    28.  
    29. <p>Выбрать цвет фона</p>
    30. <FORM>
    31. <INPUT TYPE="button" VALUE="Голубой"
    32.       onClick="newcolor('lightblue')">
    33. <INPUT TYPE="button" VALUE="Розовый"
    34.       onClick="newcolor('pink')">
    35. <INPUT TYPE="button" VALUE="Вернуть"
    36.       onClick="newcolor('white')">
    37. </FORM>
    38.  
    39. </body>
    40. </html>
    Я понял свою ошибку, спасибо, то есть нужно было создавать еще одну переменную color1
    а я присвоил получается значение переменной color в switch русский текст, а затем пытался присвоить русский текст bgColor