Jump to content
  • 0

Рандомный цвет в переменной


samec1337
 Share

Question

Приветствую!

Имеется код, в котором переменная "t" содержит случайный цвет.

Как сделать, чтобы при нажатии на кнопку, div заливался случайным цветом?

<html><head>	<meta charset="utf-8">    <style>    #box {        width: 25px;        height: 25px;        border: 1px solid black;        margin: 20px;    }     </style></head><body>    <input type="button" onclick="randomColor()" value="ЖМИ">    <div id="box"></div>    <script>    function randomColor() {    document.getElementById("box").style.backgroundColor = "red";     var t = '#' + (Math.round(Math.random(99999999, 1) * 99999999)).toString(16).substr(1);}    </script></body></html>

(В примере указал заданный цвет "red". С ним работает).

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0
с еще одной проблемой столкнулся. в той же строке "document.getElementById('box').style.backgroundColor = t;" не работает доступ к div кроме Id. Ни name, ни class, ни tagName и тд.
document.getElementsByTagName('div')[0];//по тегу вернет первый найденный divdocument.querySelector('div');//по тегу вернет первый найденный divdocument.querySelector('.mydiv');//по классу вернет первый найденный элемент с классом .mydivdocument.querySelector('[name="mydiv"]'); //по name вернет первый найденный элемент с этим именем

Вообще querySelector() принимает любые валидные селекторы. В старых версиях браузеров не работает.

Link to comment
Share on other sites

  • 0
(Math.round(Math.random(99999999, 1) * 99999999)).toString(16).substr(1);

не всегда выдаст 6-ти значную строку. Поэтому если значение цвета некорректно блок будет заливаться красным согласно первой строки в функции.

 

Лучше генерируйте цвет в rgb

rgb(255,255,255)

три раза от 0 до 255 и точно не будет ошибок.

Link to comment
Share on other sites

  • 0
(Math.round(Math.random(99999999, 1) * 99999999)).toString(16).substr(1);

не всегда выдаст 6-ти значную строку. Поэтому значение цвета некорректно блок будет заливаться красным согласно первой строки в функции.

 

Лучше генерируйте цвет в rgb

rgb(255,255,255)

три раза от 0 до 255 и точно не будет ошибок.

 

 

переписал - не работает)

мне кажется проблема в строке "document.getElementById("box").style.backgroundColor = t;"

<html><head>	<meta charset="utf-8">    <style>    #box {        width: 25px;        height: 25px;        border: 1px solid black;        margin: 20px;    }    </style></head><body>    <input type="button" onclick="randomColor()" value="ЖМИ">    <div id="box"></div>    <script>    function randomColor() {    document.getElementById("box").style.backgroundColor = t;    var t = 'rgb(' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' +      (Math.round(Math.random(255, 0) * 255)).toString(10) + ')';}    </script></body></html>
Link to comment
Share on other sites

  • 0

1. сначала объявите функцию, а потом обращайтесь к ней

2. присвоение значения должно быть после того как объявлена переменная t

<html><head>	<meta charset="utf-8">    <style>    #box {        width: 25px;        height: 25px;        border: 1px solid black;        margin: 20px;    }    </style><script>    function randomColor() {        var t = 'rgb(' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' +      (Math.round(Math.random(255, 0) * 255)).toString(10) + ')';}document.getElementById("box").style.backgroundColor = t;    </script></head><body>    <input type="button" onclick="randomColor()" value="ЖМИ">    <div id="box"></div>    </body></html>
Link to comment
Share on other sites

  • 0

 

1. сначала объявите функцию, а потом обращайтесь к ней

2. присвоение значения должно быть после того как объявлена переменная t

<html><head>	<meta charset="utf-8">    <style>    #box {        width: 25px;        height: 25px;        border: 1px solid black;        margin: 20px;    }    </style><script>    function randomColor() {        var t = 'rgb(' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' +      (Math.round(Math.random(255, 0) * 255)).toString(10) + ')';}document.getElementById("box").style.backgroundColor = t;    </script></head><body>    <input type="button" onclick="randomColor()" value="ЖМИ">    <div id="box"></div>    </body></html>

 

спасибо! все работает

PS еще надо было "document.getElementById("box").style.backgroundColor = t;" в функцию засунуть

  • Like 1
Link to comment
Share on other sites

  • 0
PS еще надо было "document.getElementById("box").style.backgroundColor = t;" в функцию засунуть

 

да надо было, это я когда сверху переносил промазал мимо скобки и не заметил )) + за внимательность.

Link to comment
Share on other sites

  • 0

 

PS еще надо было "document.getElementById("box").style.backgroundColor = t;" в функцию засунуть

 

да надо было, это я когда сверху переносил промазал мимо скобки и не заметил )) + за внимательность.

 

 

с еще одной проблемой столкнулся. в той же строке "document.getElementById('box').style.backgroundColor = t;" не работает доступ к div кроме Id. Ни name, ни class, ни tagName и тд.

В гугле инфы не нашел.

<html><head>	<meta charset="utf-8">    <style>    div {        width: 125px;        height: 125px;        border: 1px solid black;        margin: 20px;    }    </style><script>    function randomColor() {    var t = 'rgb(' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' + (Math.round(Math.random(255, 0) * 255)).toString(10) + ',' +      (Math.round(Math.random(255, 0) * 255)).toString(10) + ')';      document.getElementsByClassName("box1").style.backgroundColor = t;}    </script></head><body>    <input type="button" onclick="randomColor()" value="ЖМИ">    <div class="box1"></div></body></html>
Edited by samec1337
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy