Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/114: Рейтинг темы: голосов - 114, средняя оценка - 4.68
10 / 10 / 3
Регистрация: 18.07.2010
Сообщений: 180

Динамическое создание таблицы

03.05.2012, 18:21. Показов 21669. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, задание таково- Написать скрипт, который формирует таблицу пифагора в указанном пользователем диапазоне.
т.е. пользователь вводит от скольки до скольки должна рисоваться таблица (например от 5 до 17)
Таблицу отобразить с помощью оформленной таблицы.
Вот мой скрипт
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var cols = prompt("Введите количество строк", "");
var rows = prompt("Введите количество столбцов", "");
cols = parseInt(cols);
rows = parseInt(rows);
document.write(' <table border=1, cellpadding=0, cellspacing=0, width="500px">');
for (i = 1; i <= cols; i++) {
    document.write("<tr>"+rowscalc(rows)+"</tr>");
}
document.write("</table>");
 
function rowscalc(r) {
    for (k = 1; k <= r; k++) {
        document.write("<td>"+k+"</td>");
    }
}
таблица создаётся, однако над таблицей выводится несколько undefined подряд, не пойму откуда это вобще берётся. На данном этапе это единственная проблема.
Заранее благодарю за ответ.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2012, 18:21
Ответы с готовыми решениями:

Динамическое создание таблицы.
как динамически создать таблицу, если заранее не известно количество строк и столбцов. они задаются пользователем.

Динамическое редактирование таблицы
Не работает указанное заполнение таблички. Не знаю почему... &lt;html&gt; &lt;head&gt; &lt;style type=&quot;text/css&quot;&gt; html { ...

Динамическое заполнение таблицы
Мне нужно 5 столбцов на 6 строк,первая строка это название столбцов. В первом столбце с 2 по 6 строку это статические названия строк. А...

4
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
04.05.2012, 09:29
JavaScript
1
2
3
4
5
6
7
8
9
var cols = prompt ('Введите количество строк', '');    cols = parseInt(cols);
var rows = prompt ('Введите количество столбцов', ''); rows = parseInt(rows);
 
function rowscalc (i, r)
{for (var k = 1, z = ''; k <= r; k++)  z += '<td align="right">' + i * k + '</td>'; return z}
 
document.write ('<table border="1", cellpadding="0", cellspacing="0", width="500px">');
for (var i = 1; i <= cols; i++) document.write ('<tr>' + rowscalc (i, rows) + '</tr>');
document.write ('</table>');
undefined "наверху" пишется столько раз, сколько раз вы вызывали вашу функцию rowscalc (), которая на момент вызова была ещё не определена.

В общем:
1. Функция rowscalc () должна быть определена раньше, чем её вызывают. Поэтому она и перемещена наверх, до цикла по индексу j, где её вызывают.

2. Функция rowscalc () должна возвращать данные при вызове, а не печатать сама. Поэтому в функции введена изначально пустая переменная z, которая "дополняется содержимым" на каждом шаге цикла. И по окончании цикла отдаётся в вызывающую программу.

3. Функция rowscalc () должна получать в качестве аргумента номер строки. Поэтому у неё теперь два аргумента.


PS. Пифагорова таблица вообще-то должна содержать ещё один столбец (слева) и одну строку (сверху).

PS2. Ну и потом, объявленное вами условие "от скольки до скольки" данный скрипт не исполняет, ибо ему для этого не хватает исходных данных. Следует ввести ещё 2 (два) prompt'a, которые будут запрашивать начальные значения для строк и столбцов, кои вы сможете подставить в циклы в качестве начальных значений для j и k.
2
10 / 10 / 3
Регистрация: 18.07.2010
Сообщений: 180
04.05.2012, 10:09  [ТС]
Большое спасибо за разьяснение, обошелся без функции.
Впринципи всё готово, однако вверху слева лишний столбец, как его убрать?
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var cols = prompt("Введите количество строк", "");
var rows = prompt("Введите количество столбцов", "");
cols = parseInt(cols);
rows = parseInt(rows);
if (cols<1 || rows <1) {
    cols = 1;
    rows = 1;
}
document.write(' <table border=1, cellpadding=2, cellspacing=0, width="90%">');
for (i = 0; i <= cols; i++) 
    {
        document.write("<tr>");
        for (k = 0; k <= rows; k++)
         {
 
             if (k == 0) {
                 document.write('<td style="background-color:orange">');
                 document.write(i);
                
             }
             else
                 if (i == 0) {
                     document.write('<td style="background-color:orange">');
                     document.write(k);
                     
 
                 }
                 else {
                     document.write('<td style="background-color:silver">');
                     document.write(i * k);
                    
                 }
 
                 document.write("</td>");
         }
   
        document.write("</tr>");
    }
document.write("</table>");
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
04.05.2012, 10:39
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var cols = prompt ('Введите количество строк', '');
var rows = prompt ('Введите количество столбцов', '');
cols = parseInt (cols);
rows = parseInt (rows);
document.write ('<table border="1" cellpadding="2" cellspacing="0" width="90%">');
for (var r = 0, lr = rows + 1; r < lr; r++)
   {
   for (var t, z = '', c = 0, lc = cols + 1; c < lc; c++)
      {
      t = r * c; if (!r && !c) t = '&nbsp;'; else if (!Math.min (r, c)) t = Math.max (r, c);
      z += '<td style="background-color: ' + ((!r || !c) ? 'orange' : 'silver') + '">' + t + '</td>';
      }
   document.write ('<tr>' + z + '</tr>')
   }
document.write ('</table>');
1
0 / 0 / 0
Регистрация: 30.10.2014
Сообщений: 19
29.04.2015, 12:16
var cols = prompt("Введите количество строк", "");
var rows = prompt("Введите количество столбцов", "");
cols = parseInt(cols);
rows = parseInt(rows);
if (cols<1 || rows <1) {
cols = 1;
rows = 1;
}
document.write(' <table border=1, cellpadding=2, cellspacing=0, width="90%">');
for (i = 0; i <= cols; i++)
{
document.write("<tr>");
for (k = 0; k <= rows; k++)
{

if (k == 0) {
document.write('<td style="background-color:orange">');
document.write(i);

}
else
if (i == 0) {
document.write('<td style="background-color:orange">');
document.write(k);


}
else {
document.write('<td style="background-color:silver">');
document.write(i * k);

}

document.write("</td>");
}

document.write("</tr>");
}
document.write("</table>");


скажите что делает K=0?????
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.04.2015, 12:16
Помогаю со студенческими работами здесь

Динамическое изменение ширины таблицы
Нужно чтобы клиент мог интерактивно изменять ширину таблицы

Динамическое добавление строки таблицы
Здравствуйте! Есть вот такой код: &lt;html&gt; &lt;head&gt; &lt;title&gt;Загрузка произвольного числа файлов на сервер&lt;/title&gt; ...

Динамическое создание формы
Требуется через js отправить пользователя с пост запросом, адрес статичный но поля нет, (пользователь жмёт на кнопку, идёт запрос на...

Динамическое создание кук
Почему у куки не создаётся срок годности? В таблицу добавляется, но в Cookies не добавляется? Добавляю куки на 114 строке ...

Динамическое создание кнопок
Здравствуйте,подскажите как реализовать данную функцию.Мне нужно,что бы при нажатии кнопки создавались динамически кнопки.Решил это...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru