Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
7 / 7 / 1
Регистрация: 22.10.2013
Сообщений: 95

Добавить методы в таблицы

16.12.2018, 04:22. Показов 1467. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Подскажите, как можно добавить методы в "КЛАСС" таблицы? Пробовал копать в сторону prototype, но так и не нашел функцию создающую таблицы.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2018, 04:22
Ответы с готовыми решениями:

Взять информацию из одной таблицы и добавить её в другую таблицу
Здравствуйте! Скажите пожалуйста. Пользователь заходить на страницу "1" заполняет таблицу есть какая нибудь функция на javascript что бы...

Как добавить input в ячейки таблицы
Все привет. Я создаю динамическую редактируемую таблицу на HTML. Сейчас застрял на редактировании ячеек td таблицы table. Как мне добавить...

Можно ли добавить addEventListener к конкретной колонке таблицы?
Подскажите плс, возможно ли добавить addEventListener к конкретной колонке таблицы только в тег tbody, но thead и tfoot не трогать. По...

9
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
16.12.2018, 12:31
Здравствуйте.
Подробно задачу сформулируйте.
И пример покажите, что в итоге.
Пока задача не ясна.
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
16.12.2018, 14:25
Цитата Сообщение от mikado3333 Посмотреть сообщение
но так и не нашел функцию создающую таблицы.
Подозреваю, что это HTMLTableElement
0
7 / 7 / 1
Регистрация: 22.10.2013
Сообщений: 95
16.12.2018, 15:39  [ТС]
Задача - при появлении таблицы на странице, в ней уже было некое свойство или метод.
пробовал в консоле следующее
JavaScript
1
2
3
4
5
6
7
8
HTMLTableElement.test1 -> undefined
HTMLTableElement.prorotype = {test1:1}; -> Object { test1: 1 }
HTMLTableElement.test1 -> undefined
HTMLTableElement.test1 = 1; -> 1
HTMLTableElement.test1 -> 1
tb = document.createElement('table'); -> <table>
tb -> <table>
tb.test1 -> undefined
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
16.12.2018, 16:01
Цитата Сообщение от mikado3333 Посмотреть сообщение
пробовал в консоле следующее
Попробуй так
PHP/HTML
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
40
41
42
43
44
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
 
<body>
 
    <button onclick="run();">Добавить заголовки</button>
    <script>
 
        HTMLTableElement.prototype.addTitles = function (...titles)
        {
            let row = this.insertRow(0);
            for (let title of titles)
            {
                let th = document.createElement("th");
                th.textContent = title;
                row.appendChild(th);
            }
        }
 
        function run()
        {
            document.getElementById("table").addTitles("Фамилия", "Имя", "Отчество");
        }
 
    </script>
    <table id="table">
        <tbody>
            <tr>
                <td>Иванов</td>
                <td>Иван</td>
                <td>Иванович</td>
            </tr>
        </tbody>
    </table>
</body>
 
</html>
0
7 / 7 / 1
Регистрация: 22.10.2013
Сообщений: 95
16.12.2018, 16:25  [ТС]
С методом понял, а со свойством как быть?
Вот пример с учебника
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
var animal = {
  eats: true
};
 
function Rabbit(name) {
  this.name = name;
}
 
Rabbit.prototype = animal;
 
var rabbit = new Rabbit("Кроль"); //  rabbit.__proto__ == animal
 
alert( rabbit.eats ); // true
Я в консоле делал аналогично

JavaScript
1
2
HTMLTableElement.prorotype = {test1:1}; -> Object { test1: 1 }
HTMLTableElement.test1 -> undefined
Что не так, подскажите?
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
16.12.2018, 16:51
Цитата Сообщение от mikado3333 Посмотреть сообщение
С методом понял, а со свойством как быть?
Свойство, в смысле с акцессорами? Тогда так
JavaScript
1
2
3
        Object.defineProperty(HTMLTableElement.prototype, "cellCount", {
            get: function () { return this.querySelectorAll("th,td").length; }
        });
Сеттер устанавливается аналогично(читай документацию по defineProperty). Использовать можно так
JavaScript
1
2
3
4
5
6
        function run()
        {
            let table = document.getElementById("table");
            table.addTitles("Фамилия", "Имя", "Отчество");
            console.log(table.cellCount); // выведет общее количество ячеек в таблице
        }
Если речь о поле, то там все совсем просто
JavaScript
1
2
HTMLTableElement.prototype.test = 1;
console.log(table.test);
1
7 / 7 / 1
Регистрация: 22.10.2013
Сообщений: 95
16.12.2018, 17:08  [ТС]
diadiavova,Спасибо, доходчиво, вот только один вопрос остался- объясните пожалуйста почему не работает HTMLTableElement.prorotype = {test1:1} table.test1 -> undefined;? Вроде по учебнику.
0
 Аватар для diadiavova
7261 / 2608 / 745
Регистрация: 11.04.2015
Сообщений: 4,155
Записей в блоге: 43
16.12.2018, 19:39
mikado3333, то, что написано в учебнике, касается JavaScript-объектов, а с DOM-объектами далеко не все работает так же. В частности свойство prototype там доступно только для чтения.
0
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
16.12.2018, 21:09
Лучший ответ Сообщение было отмечено amr-now как решение

Решение

Цитата Сообщение от mikado3333 Посмотреть сообщение
Задача - при появлении таблицы на странице, в ней уже было некое свойство или метод.
PHP/HTML
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
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
</head>
 
<body>
    <table id="t1">
        <tr>
            <td>7</td>
        </tr>
    </table>
    <table id="t2">
        <tr>
            <td>5</td>
        </tr>
    </table>
    <script>
        let tab = document.getElementById("t1");
        tab.__proto__.aaaaaa = 77777;
        tab.__proto__.doIt = function () { console.log(this.aaaaaa + 11111); };
        console.log(tab.aaaaaa);
        tab.doIt();
        console.dir(tab);
        let tab2 = document.getElementById("t2");
        console.log(tab2.aaaaaa);
        tab2.doIt();
    </script>
</body>
</html>
Тут, кстати, наглядный пример, когда лямбда-функция портит this, который именно там нужен.
Вывод: если ты собираешься реализовать нестатический метод из ООП - будь добр использовать древний синтаксис функции.

Добавлено через 30 минут
Можно и миксин толкнуть, если хочется пограмотней, аж невтерпёж.
Здесь поверхностное копирование миксина, пока без извращений со ссылками на свойства миксина.
PHP/HTML
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
40
41
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
</head>
 
<body>
    <table id="t1">
        <tr>
            <td>7</td>
        </tr>
    </table>
    <table id="t2">
        <tr>
            <td>5</td>
        </tr>
    </table>
    <script>
        let tab = document.getElementById("t1");
        let mix1 = {
        aaaaaa:77777,
        doIt: function () { console.log(this.aaaaaa + 11111); }
        };
        // Замиксуем копированием
        mixin(tab.__proto__, mix1);
        console.log(tab.aaaaaa);
        tab.doIt();
        console.dir(tab);
        let tab2 = document.getElementById("t2");
        console.log(tab2.aaaaaa);
        tab2.doIt();
 
        function mixin(obj1, obj2) {
            for (let name of Object.getOwnPropertyNames(obj2)) {
                if (obj1[name] === undefined)
                    Object.defineProperty(obj1, name, Object.getOwnPropertyDescriptor(obj2, name));
            }
        }
    </script>
</body>
</html>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.12.2018, 21:09
Помогаю со студенческими работами здесь

Добавить методы
Здравствуйте. Помогите добавить в этот код: using System; namespace ConsoleApplication1 { class Matr { ...

Как добавить несколько записей из таблицы в ячейку другой таблицы через запятую?
имеется бд кулинарная книга, где при добавлении блюда, продукты добавлялись через запятую, по выбору из другой таблицы(список продуктов)......

Добавить методы в код
Есть код, но там не хватает методов. Можете добавить методов( 1 или 2 или 3 метода), что бы код полноценно работал. Несколько раз пробовал...

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

Добавить методы в свой класс
доброго времени суток! только недавно установил ms studio 2012. с горем пополам создал 2й модуль, подключил к главному, но это ерунда....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru