Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 5

Прошу объяснить ошибку

20.02.2018, 20:03. Показов 659. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function createStr(){
    var calls = document.getElementsByClassName('call'); //коллекция из 25 ячеек
    var canvasWidth = document.getElementById("canvasWidth").value; //в текущий момент 5
    var canvasHeight = document.getElementById("canvasHeight").value; //в текущий момент 5
    var color = "";
    for(i=0; i<canvasWidth; i++){
        for(j=0; j<canvasHeight; j++){
            if(calls[(j+(canvasHeight*i))].style.background == "transparent"){continue}
            else{
                color = color +" "+transfer(calls[(j+(canvasHeight*i))].style.background);
            }
        }
    }
    console.log(color);
}
function transfer(count){
    var str = count.slice(4,-1);
    str = str.split(", ");
    for(i=0; i<3; i++){
        str[i] = (+str[i]).toString(16);
        if(str[i].length < 2){str[i] = "0"+str[i]};
    }
    return "#"+str[0]+str[1]+str[2];
}
Если что, назначение кода по большей части обучающее.
Входные данные: поле 5 на 5, ячейки которого рандомно окрашены в разные цвета. Есть прозрачные ячейки которые следует пропускать.
Суть кода: получает с div-ячеек цвет в виде "rgb(x, x, x)", пропуская прозрачные, преобразует его в 16-ю систему счисления и пытается вывести цвета в одну строку (#xxxxxx #xxxxxx с повторениями).
Код не работает, при диапазоне окрашенных ячеек с 0 по 19 выводит только одну позицию в любом случае (за исключением когда все прозрачные). При выборе диапазона от 20 и дальше (есть окрашенные ячейки в последним столбце) цикл уходит в бесконечность.
Объясните, пожалуйста, откуда бесконечный цикл, и почему строка не получается?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2018, 20:03
Ответы с готовыми решениями:

Прошу объяснить о ссылках,указателях,стрелке -> и двоеточиях :: очень прошу я не понял синтаксис
Здравствуйте! Есть конкретно 4 типа: 1)стрелка (-&gt;) 2)указатели (*) 3)ссылки (&amp;) 4)2е двоеточий (::) а вопрос:что они собой...

Прошу объяснить
Всем привет! начал изучать эту базу на данном этапе не могу понять как правильно организовать данные,допустим есть главная таблица,в ней...

Прошу объяснить на пальцах
Здравствуйте гуру, дающие жизнь метало текстолитовым сущностям. Прошу объяснить подробно, при помощи простых аналогий и несложных...

6
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
21.02.2018, 04:39
JavaScript
1
2
3
4
5
6
7
8
9
10
let block = document.querySelector('.block');
for(let i = 0; i < 25; i++)
    block.innerHTML += '<div class ="cell"></div>';
let cells = document.querySelectorAll('.cell');
let rand = () => Math.floor(Math.random() * 256);
let color = () => 'rgb(' + rand() + ',' + rand() + ',' + rand() + ')';
cells.forEach(el => el.style.background = color());
 
let reg = /\d+/g;
cells.forEach(el => console.log(el.style.background + ' = #' + el.style.background.match(reg).reduce((str, el) => str += parseInt(el).toString(16).toUpperCase(), '')));
HTML5
1
2
3
<body>
    <div class="block"></div>
</body>
CSS
1
2
3
4
5
6
7
8
9
10
11
.cell {
    width: 50px;
    height: 50px;
    float: left;
    border: 1px solid white;
    box-sizing: border-bo
}
.block {
    width: 250px;
    height: 250px;
}
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
21.02.2018, 11:52
toString(16) ещё не достаточно для полноценного преобразования десятичного представления цвета в шестнадцатеричное. Если десятичное меньше, чем 16, то toString(16) выдаст одну 16-ричную цыфирь, а нужно две. Так что, недостающую спереди цыфру нужно дополнить нулём примерно так:
JavaScript
1
2
3
var R = 10; // десятичный уровень красного
var R16 = (R > 15 ? R.toString(16) : "0" + R.toString(16)).toUpperCase();
alert(R16); // шестнадцатеричный уровень красного
1
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 5
21.02.2018, 14:59  [ТС]
klopp
Вы написали код для создания поля, а мне нужно наоборот, прочитать уже существующее поле.

Опан
Так этот фрагмент
JavaScript
1
2
3
 for(i=0; i<3; i++){
        str[i] = (+str[i]).toString(16);
        if(str[i].length < 2){str[i] = "0"+str[i]};
и дополняет цифру, если её длина меньше 2.
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
21.02.2018, 15:14
Цитата Сообщение от Лоэнрон Посмотреть сообщение
цикл уходит в бесконечность
Как вы это определили? Есть ошибки в консоли? Вы из createStr() в цикле вызываете transfer(count), в которой тоже цикл, а переменная i у вас сыпется в глобальную область.
Добавьте в начало своего скрипта
JavaScript
1
'use strict';
и исправьте все ошибки в консоли. Дальше будет видно...
0
0 / 0 / 0
Регистрация: 06.09.2017
Сообщений: 5
21.02.2018, 15:33  [ТС]
j2FunOnly
Вот я балда, точно!

Других ошибок нет.

Спасибо.
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
21.02.2018, 15:59
Цитата Сообщение от Лоэнрон Посмотреть сообщение
Вы написали код для создания поля
если вы имеете ввиду строки 2-7 моего кода,то это чтобы ручками не делать это в HTML, ведь вы же не выложили свои HTML и CSS
Цитата Сообщение от Лоэнрон Посмотреть сообщение
а мне нужно наоборот, прочитать уже существующее поле.
ну дык строка 10 как раз этим и занимается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2018, 15:59
Помогаю со студенческими работами здесь

Прошу объяснить код С++
здравствуйте, прошу объяснить как для полного нуба простейшими словами данный кусок кода: y=150 (10010110 в двоичной) int y=150; ...

Прошу объяснить код
Добрый день. Только учусь, дается тяжело, если есть у кого свободное время прошу помочь по коду, особенно не понятно для чего нужен class...

Прошу объяснить логику задачи
Всем привет. Изучаю язык для себя лично. Уже несколько часов мучаюсь с задачей. Объясните плиз логику этого задания, а то...

Прошу объяснить насчет памяти
стоит вот такая память http://www.corsair.com/ru/cmv4gx3m1a1333c9.html Непонятно - плата ставит тайминги и напряжение по...

Прошу объяснить работу writeln(1:i);
Имеется код: var m,k,i:byte; begin randomize; m:=random(19)+2; // кол-во символов &quot;*&quot; в строке k:=random(19)+2; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru