Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Excel таблица на Javascript'е (https://javascript.ru/forum/project/40375-excel-tablica-na-javascript%27e.html)

RazieLakaALieN 02.08.2013 15:48

Excel таблица на Javascript'е
 
Добрый день.
Пытаюсь написать что-то вроде примитивной эксель таблицы на javascript.
Столкнулся с проблемой назначения уникальных ID каждой ячейке (или элементов в ячейке, напр. для input)

var table = document.getElementById("excelTable");
var input = table.getElementsByTagName("input");

function createCell(cell, r, c) { // r - отвечает за цифру столбца, c - за цифру ряда
    cell.innerHTML = "<input id='td" + r + c + "' type='text' onfocus='doEdit(this.id);' onblur='doUpdate(this.value, this.id);' />";
    
}

function addRowId() {

     // код для определения индекса ячейки в столбце

}

function addColId() {
    
    // код для определения индекса ячейки в ряду

}

function appendRow(n) { // добавляет столбец
    for (; n > 0; n--) {
        var row = table.insertRow(table.rows.length);
        for (var i = 0; i < table.rows[0].cells.length; i++) {
            createCell(row.insertCell(i), addRowId(), addColId());
        }
    }
}

function appendColumn(n) { // добавляет ряд
    for (; n > 0; n--) {
        for (var i = 0; i < table.rows.length; i++) {
            createCell(table.rows[i].insertCell(table.rows[i].cells.length), addRowId(), addColId());
        }
    }
}


Мне надо чтобы при создании ячейки ей (точнее не совсем ей а input'у) назначался ID в виде двух цифр, первая цифра, это столбец, в котором находится ячейка, вторая цифра, это ряд в котором находится ячейча... например 23 (второй столбец, третий ряд)

Мне необходимо задавать эти ID, чтобы потом можно было обращаться к этим инпутам в ячейках.
Если это возможно реализовать как-то по-другому, буду очень рад услышать любую идею.

Заранее благодарю

JSN 02.08.2013 16:28

Насколько я знаю js, все написано верно, но скобки в скобках делать нельзя их нужно обратным слешем выделять \'
А двойные или одинарные - не важно

JSN 02.08.2013 16:30

'<input id=\'td' + r + c + '\' type='text' onfocus=\'doEdit(this.id);\' onblur=\'doUpdate(this.value, this.id);\' />'

RazieLakaALieN 02.08.2013 16:32

Цитата:

Сообщение от JSN (Сообщение 265554)
Насколько я знаю js, все написано верно, но скобки в скобках делать нельзя их нужно обратным слешем выделять \'
А двойные или одинарные - не важно

Ты скорее всего имел ввиду кавычки... Нет тут все верно, двойные кавычки могут содержать одинарные и наоборот, в этом случае у меня все работает...

Но вопрос был не об этом, мне надо написать код для нахождения индекса ячейки, её столбца и её ряда.

JSN 02.08.2013 16:33

Я бы делал так.
for (var i = 0; i <= 20; i++) {
  row = document.createElement('tr')
  table.appendChild(row);
  for (var j = 0; j <= 20; j++) {
    cell = document.createElement('td');
    row.appendChild(cell);
    cell.innerHTML = "<input id='td" + i + ' ' + j + "' type='text' onfocus='doEdit(this.id);' onblur='doUpdate(this.value, this.id);' />"
  }
}

Ошибся, теперь исправил

RazieLakaALieN 02.08.2013 16:51

Цитата:

Сообщение от JSN (Сообщение 265557)
Я бы делал так.
for (var i = 0; i <= 20; i++) {
  row = document.createElement('tr')
  table.appendChild(row);
  for (var j = 0; j <= 20; j++) {
    cell = document.createElement('td');
    row.appendChild(cell);
    cell.innerHTML = "<input id='td" + i + ' ' + j + "' type='text' onfocus='doEdit(this.id);' onblur='doUpdate(this.value, this.id);' />"
  }
}

Ошибся, теперь исправил

Благодарю, как вариант может сработать... только переделаю его под динамичное изменение)


Часовой пояс GMT +3, время: 22:46.