Рандомное число в блок
Добрый день. Нужно сгенерировать рандомное число при клике и встативть в div на которого кликнули.
var elem=document.querySelectorAll('.element');//.element класс div-а for (var i=0;i<elem.length;i++){ elem[i].addEventListener('click',F); } function F(){ var tiv=parseInt(Math.random()*9); } проблема в том что не могу вписать полученое число в div. querySelectorAll не работает ф с помошью this не знаю как,если даже это возможно. |
Vardges,
<div class="element"> asd </div><div class="element"> asd </div> <script> var elems=document.querySelectorAll('.element');//.element класс div-а for(var i=0; i < elems.length; i++){ elems[i].addEventListener('click',function(){ this.innerHTML=(Math.random()*9).toFixed(); }); }; </script> |
<!DOCTYPE html> <html lang="en"> <head> <style> div{ display: inline-block; width: 30px; height: 30px; border: 1px solid red; } </style> </head> <body> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <script> [].forEach.call(document.querySelectorAll('.element'), function(el){ el.onclick=function(){ el.innerHTML = Math.floor(Math.random() * 9); }; }); </script> </script> </body> </html> |
Vardges,
function F(){ this.innerHTML=parseInt(Math.random()*9); } |
Цитата:
|
А как можно вытащить значения с Div и сравнить их между собой?
var elem=document.querySelectorAll('.element'); for (var i=0;i<elem.length;i++){ elem[i].addEventListener('click',F); } function F(){ this.innerText=parseInt(Math.random()*9); var tiv=this.innerText; tiv=Number(tiv); for (var i=0;i<elem.length;i++){ if(tiv==elem[i]){ var r=parseInt(Math.random()*255); var g=parseInt(Math.random()*255); var b=parseInt(Math.random()*255); this.style.background="green"; } } } пока что додумался до такого но не могу понять с чем сравнить переменную "tiv" |
Vardges, Свойство innerText лучше не использовать.
https://developer.mozilla.org/ru/doc...Node/innerText Цитата:
В некоторых случаях коллекция «elem» внутри функции «F» может быть недоступна. https://habrahabr.ru/post/78991/ https://learn.javascript.ru/functions-closures |
[quote=Nexus;463876]Vardges, Свойство innerText лучше не использовать.
https://developer.mozilla.org/ru/doc...Node/innerText С обработанным значением другого тэга. В некоторых случаях коллекция «elem» внутри функции «F» может быть недоступна. https://habrahabr.ru/post/78991/ https://learn.javascript.ru/functions-closures[/QUOT] я чайник пока что так что нечего не понял,можно разжевать?использую хром |
Цитата:
|
Цитата:
|
Vardges,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body{ display: flex; flex-wrap: wrap; justify-content: center; } .element { border: 1px dashed Gray; padding: 5px; height: 100px; width: 100px; } </style> <script> window.addEventListener('DOMContentLoaded', function() { var elem=document.querySelectorAll('.element'); var color = {}; for (var i=0;i<elem.length;i++){ elem[i].addEventListener('click',F); } function F(){ var tiv = parseInt(Math.random()*9); this.textContent = tiv; if (!color[tiv]) { var r=parseInt(Math.random()*255); var g=parseInt(Math.random()*255); var b=parseInt(Math.random()*255); color[tiv] = "rgb("+r+", "+g+", "+b+")" } this.style.backgroundColor = color[tiv] } }); </script> </head> <body> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> </body> </html> |
Цитата:
|
<!DOCTYPE html> <html lang="en"> <head> <style> div{ display: inline-block; width: 30px; height: 30px; border: 1px solid red; } </style> </head> <body> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <div class="element">-</div> <script> var elm = document.querySelectorAll('.element'); elm.forEach(el=> el.onclick=e=>{ el.innerHTML = Math.floor(Math.random() * 9); col(); }); function col(){ elm.forEach(el=>el.style.backgroundColor = 'white'); var arr = [].slice.call(elm); arr.filter((el, i)=> { while (i--) if (+el.textContent == +arr[i].textContent){ el.style.backgroundColor = 'red'; arr[i].style.backgroundColor = 'red'; } }); }; </script> </script> </body> </html> может можно как то проще |
Vardges,
не копируйте сообщение целиком <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body{ display: flex; flex-wrap: wrap; justify-content: center; } .element { border: 1px dashed rgb(0, 0, 255); padding: 5px; height: 100px; width: 100px; } </style> <script> window.addEventListener('DOMContentLoaded', function() { var elem=document.querySelectorAll('.element'); for (var i=0;i<elem.length;i++){ elem[i].addEventListener('click',F); } function F(){ var tiv = parseInt(Math.random()*9); this.textContent = tiv; this.setAttribute("tiv", tiv); var elem = document.querySelectorAll('[tiv="'+tiv+'"]'); var color = "transparent"; if (elem.length > 1) { var r=parseInt(Math.random()*255); var g=parseInt(Math.random()*255); var b=parseInt(Math.random()*255); color = "rgb("+r+", "+g+", "+b+")" }; for (var i=0;i<elem.length;i++){ elem[i].style.backgroundColor = color } } }); </script> </head> <body> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> <div class="element"></div> </body> </html> |
Часовой пояс GMT +3, время: 03:08. |