случайное изменение цвета с помощью javascript

#javascript

Вопрос:

 <!DOCTYPE html>
<html>
    <head>
        <title>Button Homework</title>
        
        <script>
        
            function first()    {
                document.getElementById('type1').style.position = 'absolute';
                document.getElementById('type1').style.left= "100px";
                document.getElementById('type1').style.top= "200px";
                var red = Math.floor(Math.random() * 256);
                var green = Math.floor(Math.random() * 256);
                var blue = Math.floor(Math.random() * 256);

                var newColor = "rgb("  red   ","   green   ","   blue  ")";
            }
            
            function second()   {
                document.getElementById('type1').style.position = 'absolute';
                document.getElementById('type1').style.left= "0px";
                document.getElementById('type1').style.top= "80px";
            }
        </script>
    </head>
    <body>
        <h1>Special Button</h1>
        
        <input id = 'type1' type = 'button' value = 'Click' onclick = 'output();'
                            onmouseover= 'first()' onmouseout= 'second()';' />
    </body>
</html> 

Я пытаюсь заставить кнопку меняться на случайные цвета каждый раз, когда вы наводите на нее курсор, но, похоже, я не могу заставить ее работать, Если кто-нибудь знает, как, пожалуйста, помогите мне. Спасибо!

Комментарии:

1. Привет, Кевин, ты имеешь в виду перемещение положения кнопки при наведении курсора мыши?

2. Нет, но для того, чтобы кнопка менялась на случайные цвета каждый раз, когда вы наводите на нее курсор. пример: начинается как белый, но как только вы наведете на него курсор, он изменится на черный и так далее.

3. Ответ Арона точен, вы никогда не назначаете цвет элементу. Но имейте в виду, что запрос DOM сопряжен с определенными затратами, поэтому, когда это возможно, сохраняйте ссылки на элементы, которыми вам нужно манипулировать, и попытайтесь выполнить пакетные изменения, чтобы избежать повторных перерисовок.

Ответ №1:

Все, что вам нужно сделать, это назначить цвет свойству стиля. В данном случае цвет фона кнопки.

 function first() {
  var red = Math.floor(Math.random() * 256);
  var green = Math.floor(Math.random() * 256);
  var blue = Math.floor(Math.random() * 256);

  var newColor = "rgb("   red   ","   green   ","   blue   ")";
  document.getElementById("type1").style.backgroundColor = newColor;
}
 

Комментарии:

1. Ваше приветствие 🙂 Если это решило вашу проблему, пожалуйста, можете ли вы отметить ее как ответ?

Ответ №2:

Если вы хотите, чтобы ваша домашняя работа выглядела так, как будто вы скопировали ее из Интернета:

 <!DOCTYPE html>
  <head>
    <title>Button Homework</title>
    <style>
      #type1{
        position: absolute;}

      #type1.mouseover{
        left: 100px;
        top: 200px;}

      #type1:not(.mouseover){
        left: 0px;
        top: 80px;}
    </style>
  </head>
  <body>
    <h1>Special Button</h1>
    <input id="type1" onclick="Output()" onmouseover="MouseOver(this)" onmouseout="MouseOut(this)" type="button" value="click">
    <script>
      function MouseOver(button) {
         button.classList.add('mouseover');
         //set backgroundColor to random hex string
         button.style.backgroundColor = '#'   Math.floor(Math.random()*16777215).toString(16);
       }

       function MouseOut(button) {
         button.classList.remove('mouseover');
       }

       function Output() {
         //whatever this does
       }
    </script>
  </body>
</html> 

Обратите внимание, что перемещение расположения кнопок запускает событие перемещения мыши, так что это становится довольно сумасшедшим. <style> похоже, это неприменимо, когда вы вставляете его в фрагмент кода.