Обновление элементов глобального массива JavaScript

Есть html-таблица с данными. Часть данных (столбец ValUnvisible) скрыта и отображается (:before.content="+")/скрывается (:before.content="-") по клику на кнопке (:before).

<table id="example">
    <thead>
        <tr>
            <th>#</th>
            <th>Name</th>
            <th>ValVisible</th>
            <th style="display: none;">ValUnvisible</th>
        </tr>
    </thead>
    <tbody>
        <tr id="row_1">
            <td>::before
                1</td>
            <td>Name1</td>
            <td>ValVisible1</td>
            <td style="display: none;">ValUnvisible1</td>
        </tr>
        <tr id="row_2">
            <td>::before
                2</td>
            <td>Name12</td>
            <td>ValVisible2</td>
            <td style="display: none;">ValUnvisible2</td>
        </tr>
    </tbody>
</table>

После открытия скрытые колонки отображаются в виде:

    <table id="example">
        <thead>
            <tr>
                <th>#</th>
                <th>Name</th>
                <th>ValVisible</th>
                <th style="display: none;">ValUnvisible</th>
            </tr>
        </thead>
        <tbody>
            <tr id="row_1" class="parent selected">
                <td>::before
                    1</td>
                <td>Name1</td>
                <td>ValVisible1</td>
                <td style="display: none;">ValUnvisible1</td>
            </tr>
            <tr class="child" colspan="3">
                <td class="child">
                    <table>
                        <tr data-row="1" data-col="4">
                            <td>ValUnvisible</td>
                            <td>
                                <input type="text" value="ValUnvisible1" onchange="changedata(this, 1, 4);console.log('1: ['+changedata(this, 1, 4)+']'); console.log('2: ['+editorCurr[1][4]+']');">
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
            <tr id="row_2">
                <td>::before
                    2</td>
                <td>Name2</td>
                <td>ValVisible2</td>
                <td style="display: none;">ValUnvisible2</td>
            </tr>
        </tbody>
    </table>

Проблема в этой функции changedata(), которая не обновляет глобальный массив данных (editorCurr). JavaScript (в html.body, перед конечным body). Перенос объявления переменной в шапку = результат аналогичен.

<script>
var editorCurr = [];

function changedata(el, rows, cols) {
    console.log("input = ["+el.value+"]");
    editorCurr[rows][cols] = el.value;
    console.log("result["+rows+"]["+cols+"] = ["+editorCurr[rows][cols]+"]");
}
</script>

Итого:

input = [test]
result[1][4] = [undefined]
input = [test]
result[1][4] = [undefined]
1: [undefined]
2: [undefined]

Пробовал по-другому HTML:

<input type="text" value="ValUnvisible1" onchange="editorCurr[1][4]=changedata(this); console.log('1: ['+changedata(this)+']'); console.log('2: ['+editorCurr[1][4]+']');">

JavaScript:

function changedata(el) {
    console.log("input = ["+el.value+"]");
    return el.value;
}

Итого:

input = [test]
input = [test]
1: [test]
2: [undefined]

Хочу: editorCurr[1][4] = test


Ответы (0 шт):