Let all =document.querySelectorAll(".child");
function go(){
let r = Math.floor(Math.random()*255)
let g = Math.floor(Math.random()*255)
let b = Math.floor(Math.random()*255)
let x = parseInt(Math.random()*9);
this.innerHTML = x
for(let j = 0 ; j < all.length ; j++){
console.log(all[j].innerHTML)
if(all[j].innerHTML == x){
this.style.backgroundColor = `rgb(${r},${g},${b})`
}
}
}
for(let i = 0; i < all.length; i++){
all[i].addEventListener("click",go)
}
создал куб 3х3 при каждом клике одно из квадрат в кубе добавляется рандомный цифр от 0 до 9 если в квадратах совпадают цифри то для этих квадратах работает этот this.style.backgroundColor = `rgb(${r},${g},${b})` метод
JavaScript
JavaScript в чем проблема
Два замечания:
1. Твой код будет работать только в современных браузерах.
2. JS-код должен размещаться на странице ПОСЛЕ всех блоков с class="child".
Основная ошибка в опубликованном коде: Let all =document.querySelectorAll(".child"); Служебное слово "let" должно быть ВСЕГДА маленькими буквами.
Должно быть не this.style.backgroundColor = `rgb(${r},${g},${b})`, а all[j].style.backgroundColor = `rgb(${r},${g},${b})`
Ну и ты неправильно считаешь случайные числа:
let r = Math.floor(Math.random() * 256);
let g = Math.floor(Math.random() * 256);
let b = Math.floor(Math.random() * 256);
let x = Math.floor(Math.random() * 10);
Как-то так: https://jsfiddle.net/rgaoudv5/2/
1. Твой код будет работать только в современных браузерах.
2. JS-код должен размещаться на странице ПОСЛЕ всех блоков с class="child".
Основная ошибка в опубликованном коде: Let all =document.querySelectorAll(".child"); Служебное слово "let" должно быть ВСЕГДА маленькими буквами.
Должно быть не this.style.backgroundColor = `rgb(${r},${g},${b})`, а all[j].style.backgroundColor = `rgb(${r},${g},${b})`
Ну и ты неправильно считаешь случайные числа:
let r = Math.floor(Math.random() * 256);
let g = Math.floor(Math.random() * 256);
let b = Math.floor(Math.random() * 256);
let x = Math.floor(Math.random() * 10);
Как-то так: https://jsfiddle.net/rgaoudv5/2/
Mark ™
Мейл теперь сам во всех вопросах первую букву делает заглавной)
https://jsfiddle.net/ymp9w73k/
Главная проблема в том, что проверка в цикле не учитывает сам элемент, на которого кликнули. А сравнение с самим собой всегда возвращает true)
Math.random возвращает числа от 0 включительно до 1 не включительно. Поэтому надо умножать не на 255 и 9, а на 256 и 10
Еще сравнение all[ j ].textContent == x вернет true, если получится "" == 0
Пустая строка превращается в ноль. Поэтому хорошо бы ноль превратить в строку и использовать строгое сравнение all[ j ].textContent === "" + x
Забывать точки-запятые в конце строчек - плохая привычка...
_____________
let all = document.querySelectorAll(".child");
function go(elem, i) {
let r = Math.floor(Math.random() * 256);
let g = Math.floor(Math.random() * 256);
let b = Math.floor(Math.random() * 256);
let x = Math.floor(Math.random() * 10);
elem.textContent = x;
for (let j = 0; j < all.length; j++) {
console.log(all[j].textContent);
if (j != i && all[j].textContent === "" + x) {
elem.style.backgroundColor = `rgb(${r},${g},${b})`;
all[ j ].style.backgroundColor = `rgb(${r},${g},${b})`;
}
}
}
for (let i = 0; i < all.length; i++) {
all[i].addEventListener("click", function(){
go(this, i);
});
}
Главная проблема в том, что проверка в цикле не учитывает сам элемент, на которого кликнули. А сравнение с самим собой всегда возвращает true)
Math.random возвращает числа от 0 включительно до 1 не включительно. Поэтому надо умножать не на 255 и 9, а на 256 и 10
Еще сравнение all[ j ].textContent == x вернет true, если получится "" == 0
Пустая строка превращается в ноль. Поэтому хорошо бы ноль превратить в строку и использовать строгое сравнение all[ j ].textContent === "" + x
Забывать точки-запятые в конце строчек - плохая привычка...
_____________
let all = document.querySelectorAll(".child");
function go(elem, i) {
let r = Math.floor(Math.random() * 256);
let g = Math.floor(Math.random() * 256);
let b = Math.floor(Math.random() * 256);
let x = Math.floor(Math.random() * 10);
elem.textContent = x;
for (let j = 0; j < all.length; j++) {
console.log(all[j].textContent);
if (j != i && all[j].textContent === "" + x) {
elem.style.backgroundColor = `rgb(${r},${g},${b})`;
all[ j ].style.backgroundColor = `rgb(${r},${g},${b})`;
}
}
}
for (let i = 0; i < all.length; i++) {
all[i].addEventListener("click", function(){
go(this, i);
});
}
Владимир Старов
спасибо сейчас попробую
Владимир Старов
спасибо то что надо ...как мастер советуйте пожалуйста как эфективнее учить JavaScript я иду на курси по веб
"цифри"?
Владимир Старов
если крикнул на квадрат там рандомно отдал 1 и если ещё одном квадрате есть 1 то их background получают рандомний цвет
Похожие вопросы
- Есть ли аналоги JavaScript?
- С чего начать учить JavaScript?
- Подскажите книги для изучения javascript? Хочу начать изучать веб программирование javascript подойтет для начала?
- Зачем нужен prototype в JavaScript?
- Тяжело ли выучить JavaScript?
- Как создать квадрат через JavaScript?
- Смотрел я тут учебный курс Евгения Попова по javascript. Удивил он (Попов) в паре мест...
- Имеет ли смысл изучать JavaScript если я полный ноль в веб программировании?
- Как установить JavaScript на ноутбук Asus ?
- Сложности с JavaScript