1

セルの最初の行と列に文字と数字(Excelテーブルのように)を割り当て、行(cell.cellIndex == 0)で問題なく動作するようにしたいのですが、すべての列(row.rowIndex == 0 && cell.cellIndex != 0) ブラウザー IE および FF でのみ機能し、Chrome では機能しません。rowIndex = -1 を取得します

for (var i = 0; i <= inpRow.value; i++) {
    array[i] = new Array();
    arrayFunc[i] = new Array();
    row = document.createElement('tr')
    table.appendChild(row);
    for (var j = 0; j <= inpCol.value; j++) {
        cell = document.createElement('td');
        row.appendChild(cell);
        cell.setAttribute('id', (i) + "." + (j));
        if (row.rowIndex == 0 && cell.cellIndex != 0) { // row.rowIndex in chrome gets -1
                if ((j-1) >= 26) { // j-1 to asign letter from the second cell
                    var tmp = (j-1) / 26;
                    for (var f = 0; f < parseInt(tmp, 10) ; f++) {
                        for (var k = 0; k <= (j-1) - (26 * parseInt(tmp, 10)) ; k++) {
                            cell.innerHTML = '<b>' + String.fromCharCode(f + 65) + String.fromCharCode(k + 65) + '</b>';
                        }
                    }
                } else {
                    cell.innerHTML = '<b>' + String.fromCharCode(j + 64) + '</b>';
                }
            cell.style.backgroundColor = 'gray';
        } else if (cell.cellIndex == 0) {
            cell.innerHTML = '<b>' + i + '</b>';
            cell.style.backgroundColor = 'gray';
        }
 }

行とセルのインデックスではなく、id を使用する代替バリアントがあります。

cell.id.substr(0, 1) == '0' && cell.id != '0.0'

すべてのブラウザで正常に動作しますが、セルと行のインデックスを使用したいと思います:

row.rowIndex == 0 && cell.cellIndex != 0

完全なコード

4

2 に答える 2

0

Chrome と Safari の両方が、「document.createElement('tr');」を使用してテーブルに追加する各行に -1 の行インデックスを割り当てるようです。アプローチ。この場合、各行は単純に -1 であるため、行をインデックスで検索または比較しても意味がありません。

2 番目の for ループの開始直前の次の 2 行の代わりに:

row = document.createElement('tr')
table.appendChild(row);

使用する:

row = table.insertRow(-1);

これはまったく同じ仕事をするはずですが、Chrome と Safari は各行に正しいインデックスを挿入するようになりました。

于 2014-03-01T23:37:46.847 に答える