Таблица умножения на JS(стилизация)
Доброго времени суток уважаемые! Подскажите как можно сделать чтобы после вывода в консоль таблица выравнивалась по правому краю. Пробовал добавить стили oneRow.style.float = 'right', textAlign = 'right' и другие. Выдает ошибку. Подскажите пожалуйста.
let oneRow = '';
const multiply = (number) => {
for (let i = 1; i <= number; i++) {
for (let j = 1; j < 11; j++) {
oneRow += (j*i) + " ";
}
console.log(oneRow);
oneRow = '';
}
}
multiply(5);
Ответы (2 шт):
let oneRow = '';
const multiply = (number) => {
for (let i = 1; i <= number; i++) {
for (let j = 1; j < 11; j++) {
let k = j * i;
oneRow += " ".repeat(getNumberLength(number * 10) - getNumberLength(k) + 1) + k;
}
console.log(oneRow);
oneRow = '';
}
}
multiply(5);
function getNumberLength(n) {
return n.toString().length
}
Объяснение к вопросу
У строк нет пропроции style, такая пропорция есть у элементов (HTMLElement), допустим: document.body.style, вот в этом примере style будет объектом со стилями, а у строк 'some str'.style будет undefined, по этому и вылезала ошибка.
Можно конечно через стили прижать, но стили нужно вписывать в метод консоли (Способ рабочий на Firefox, в других браузерах не тестировал):
let oneRow = '';
const multiply = (number) => {
for (let i = 1; i <= number; i++) {
for (let j = 1; j < 11; j++) {
let k = j * i;
oneRow += " ".repeat(getNumberLength(number * 10) - getNumberLength(k) + 1) + k;
}
console.log('%c' + oneRow, 'float: right;');
oneRow = '';
}
}
multiply(5);
function getNumberLength(n) {
return n.toString().length
}
Вот скриншот:

P.S.: Я это не вставил как воспроизводимый пример, по той причине, что консоль в StackOverflow не позволяет внедрять стили в логи.
Попробуйте использовать padStart()
let oneRow = '';
const multiply = (number) => {
for (let i = 1; i <= number; i++) {
for (let j = 1; j < 11; j++) {
oneRow += (''+(j*i)).padStart((''+number).length + 1, ' ') + " ";
}
console.log(oneRow);
oneRow = '';
}
}
multiply(11);